Проверка наличия данных и добавление их, если нет - PullRequest
0 голосов
/ 03 июля 2018

У меня есть две строки, содержащие даты, которые я пытаюсь сравнить и посмотреть, совпадают ли они. Если нет, я хочу добавить дополнительные данные (т.е. строка 1 может измениться, и поэтому я хочу, чтобы эти изменения были добавлены в строку 2). Я попытался осмотреться и написать свой собственный цикл, но получаю ошибку.

ОБНОВЛЕНИЕ после комментария я все еще получаю ошибку; «Невозможно получить свойство 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 голосов
/ 03 июля 2018

Как уже упоминалось в комментариях, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...