我正在制作一份电子表格,其中我有co的季度销售数据。和部门。我的数据以下面提到的格式排列:
第1行有日期
数据从第2行开始
B栏:公司名称
C列: co的扇区名称。对于前能源,材料,技术等
D栏: co。的销售数字
E,F,G栏:价格,份额,合作量
H栏:空白
从下一栏开始,我有下一季度相同的数据字段
第一栏:公司名称
专栏J:合作社的行业名称。对于前能源,材料,技术等
K栏: co的销售数字
等等等等
现在,在另一个工作表中,我需要获得每个扇区内最高3/5/10/15等的名称和销售数据(前n个用户输入,具体取决于用户输入)。对于前者销售数据和公司能源领域前三名的公司名称。 我一直试图为此写一个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
答案 0 :(得分:0)
您似乎只是忘记了p是一个变量,应该在公式中对其进行处理:
Selection.FormulaArray = "=LARGE(IF('Co Wise'!$C$3:$C$600=P$3,'Co Wise'!$D$3:$D$600,"""")," & p & ")"
答案 1 :(得分:0)
可替换地:
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
在不需要循环和变量的情况下做同样的事情。