我已经编写了你可以在下面看到的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
答案 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