VBA - Выполнение Application.VLookup на всех листах и ​​подсчет, когда совпадения - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть рабочая тетрадь с 82 листами.

Мне нужно сделать Vlookup на всех листах и ​​посчитать, когда я получу нужное значение. Я сделал код для подсчета количества листов и начал «для» от 1 до максимального количества листов, но он не работает, когда я ссылаюсь на этот счет в Application.vlookup.

Вот мой код:

Function NUMBEROFTIMES(lookup_value)
 NUMBEROFTIMES = 0
         Dim WS_Count As Integer
         Dim I As Integer
         ' Set WS_Count equal to the number of worksheets in the active
         ' workbook.
         WS_Count = ActiveWorkbook.Worksheets.Count
         ' Begin the loop.
         For I = 1 To WS_Count
        If Application.VLookup(lookup_value, Worksheets(I).Range("A5:AB401"), 28, False) = "True" Then
        NUMBEROFTIMES = NUMBEROFTIMES + 1
        End If
        Next I
      End Function

Во всех листах мне нужно искать значение, которое я поместил в «lookup_value», а возвращаемое слово «True».

Спасибо.

1 Ответ

0 голосов
/ 05 сентября 2018

TRUE сложно в Excel, так как оно может представлять положительное логическое значение, 1. Попробуйте изменить «True» в вашем коде на 1 и повторите.

Более изолированным тестом было бы явное тестирование, если содержимое ячейки, содержащей True, равно строке True.

например.

    =IF(AB3 = "True", 1, 0)

... или, наоборот,

    =IF(AB3 = TRUE, 1, 0)

... и понаблюдайте за результатами этого теста.

Если это не сработает, целесообразно ли заменять содержимое в столбце 28 чем-то менее непредсказуемым, чем «ИСТИНА»?

...