使用"大如果"在vba

时间:2015-08-24 07:05:35

标签: excel-vba if-statement vba excel

我正在制作一份电子表格,其中我有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

2 个答案:

答案 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

在不需要循环和变量的情况下做同样的事情。