我正在制作一个电子表格,其中我有公司按季度计算的销售数据。还有扇区。我的数据按以下格式排列:
第1行有日期
数据从第2行开始
列B:公司名称
列C:公司的扇区名称。为了前夫。能源、材料、技术等
栏D:公司的销售数字。
列E,F,G:价格,股票,公司成交量。
柱H:坯料
从下一栏开始,我有相同的下一季度数据字段。
列I:公司名称
列J:公司的扇区名称。为了前夫。能源、材料、技术等
列K: co的销售数字
就这样等等
现在,在另一个工作表中,我需要在每个扇区中获得前3/5/10/15等(根据用户输入而定)的名称和销售数据。为了前夫。销售数字和公司能源行业前三大公司的名称。我一直试图为此编写一个vba代码,但我正在挣扎。我在下面提到了我正在尝试的代码,但是它一点也不灵活,因为在我的代码中,我提到了列C和D,它们实际上在每个季度之后都会发生变化。
Sub try()
Dim r As Long
n = Range("topcos").Value + 5
For r = 5 To n
p = 1
Worksheets("Top co. share with co name").Activate
Cells(r, 16).Select
Selection.FormulaArray = "=LARGE(IF('Co Wise'!$C$3:$C$600=P$3,'Co Wise'!$D$3:$D$600,""""),p)"
p = p + 1
Next r
End Sub发布于 2015-08-24 10:17:13
似乎你只是忘记了p是一个变量,应该在公式中这样处理:
Selection.FormulaArray = "=LARGE(IF('Co Wise'!$C$3:$C$600=P$3,'Co Wise'!$D$3:$D$600,"""")," & p & ")"发布于 2015-08-24 10:26:23
另一种选择是:
Sub SO()
Sheets("Top co. share with co name").Range("P5:P" & [topcos] + 5).FormulaArray = _
"=LARGE(IF('Co Wise'!$C$3:$C$600=P$3,'Co Wise'!$D$3:$D$600,""""),ROW()-4)"
End Sub在不需要循环和变量的情况下做同样的事情。
https://stackoverflow.com/questions/32176251
复制相似问题