检查数据是否存在,如果不存在则添加

时间:2018-07-03 07:58:26

标签: excel vba excel-vba loops

我有两行包含要比较的日期,看看它们是否相同。如果没有,我想添加额外的数据(即第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

1 个答案:

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