我有两行包含要比较的日期,看看它们是否相同。如果没有,我想添加额外的数据(即第1行可以更改,因此我希望将这些更改添加到第2行)。我尝试过环顾四周,也编写了自己的循环,但是我遇到了错误。
更新 在评论之后,我仍然遇到错误; “无法获得worksheetfunction类的CountIf属性”
我想知道是否有其他方法可以检查第二行中是否存在数据,如果没有,添加它。 我是vba和编程的新手,将不胜感激。
Dim Dates As Range
Set Dates = Range("C23:O23")
Dim hisdate As Range
Set hisdate = Range("C35:O35")
For Each cell In Dates 'this is gonna first add new dates
If WorksheetFunction.CountIf(hisdate, cell) > 0 Then 'do nothing
Else
Set hisdate = Union(hisdate, cell)
End If
Next
答案 0 :(得分:4)
如评论中所述,WorksheetFunction.CountIf
不适用于多区域范围。您可以编写自己的countIf函数,该函数遍历所有区域(即使范围不是多区域范围也可以使用)
Dim cell As Range
For Each cell In Dates 'this is gonna first add new dates
If MyCountIf(hisdate, cell) <= 0 Then
Set hisdate = Union(hisdate, cell)
End If
Next
Debug.Print hisdate.Address
Function MyCountIf(fullRange As Range, val As Variant)
MyCountIf = 0
Dim r As Range
For Each r In fullRange.Areas
MyCountIf = MyCountIf + WorksheetFunction.CountIf(r, val)
Next
End Function