参数不是可选的vba Countifs

时间:2017-02-16 18:39:36

标签: vba

我已经编写了你可以在下面看到的vba代码来检查“E”列中的每一行是否都有一个'Tie'值,如果是,我想执行countifs来计算两个之间没有绑定值的数量领带。无论如何,它适用于excel,语法如下:= COUNTIFS($ A $ 2:A6,A6)-1

我想通过vba完成这项工作。所以我写了你在下面看到的内容,但它一直给我“Argument not optional”错误,高亮显示Countifs。我可以理解有些不对劲,但我无法理解为什么。你能帮助我吗?

Sub Macro1()

Range("f2").Select

Dim i As Integer
i = 1
Dim var1 As Integer


lastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To lastrow
 If Range("E" & i).Value = "Tie" Then
    Range("F" & i).Value = Application.WorksheetFunction.CountIfs(Range("$A" & "$" & var1 & ":" & "A" & i, "A" & i)) - 1
     var1 = i
 Else
    Range("F" & i).Value = 0
 End If
Next i

End Sub

1 个答案:

答案 0 :(得分:1)

您正在使用Range错误。

变化:

Range("$A" & "$" & var1 & ":" & "A" & i, "A" & i)

为:

Range("$A" & "$" & var1 & ":" & "A" & i), Range("A" & i)

所以整个公式将是:

Range("F" & i).Value = Application.WorksheetFunction.CountIfs(Range("$A" & "$" & var1 & ":" & "A" & i), Range("A" & i)) - 1

您还需要在循环之前为var1分配值,否则它将为0并且没有第0行:

Sub Macro1()

Range("f2").Select

Dim i As Integer
i = 1
Dim var1 As Integer

var1 = 2
With ActiveSheet
    Lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
    For i = 2 To Lastrow
        If .Range("E" & i).Value = "Tie" Then
           .Range("F" & i).Value = Application.WorksheetFunction.CountIfs(.Range("$A" & "$" & var1 & ":" & "A" & i), .Range("A" & i)) - 1
           var1 = i
        Else
           .Range("F" & i).Value = 0
        End If
    Next i
End With

End Sub