У меня проблема с функцией findNext в VBA в Excel.
У меня есть две вкладки: «Tab A» и «Tab B». В моей первой вкладке у меня есть все различные элементы в столбце (банан, яблоко, груша и т. Д.), И идея для меня состоит в том, чтобы подсчитать, сколько раз оно появилось во второй вкладке. Например: я знаю, что банан появляется во второй вкладке 150 раз.
Я использовал следующую функцию:
Function Test()
Conf = "Banana"
Dim rgFound As Range
CptTtl = 0
With Worksheets("Tab B").Range("L2:L500")
Set rgFound = .Find(Conf)
If Not rgFound Is Nothing Then
firstAddress = rgFound.Address
CptTtl = CptTtl + 1
Do
Set rgFound = .FindNext(rgFound)
CptTtl = CptTtl + 1
Loop While Not rgFound Is Nothing And rgFound.Address <> firstAddress
CptTtl = CptTtl - 1
End If
End With
MsgBox CptTtl
End Function
Итак, как я только что объяснил выше, когда я фильтрую вручную, янайти 150 бананов, но когда я использую эту функцию, я нахожу только 118, и я понятия не имею, почему.
У кого-нибудь есть идеи?
Я наконец нашел решение, здесьэто решение:
Это было просто добавить это LookIn:=xlValues
, потому что я использовал формулы и хотел найти значение
Function Test()
Conf = "Banana"
Dim rgFound As Range
CptTtl = 0
With Worksheets("Tab B").Range("L2:L500")
Set rgFound = .Find(Conf, LookIn:=xlValues)
If Not rgFound Is Nothing Then
firstAddress = rgFound.Address
CptTtl = CptTtl + 1
Do
Set rgFound = .FindNext(rgFound)
CptTtl = CptTtl + 1
Loop While Not rgFound Is Nothing And rgFound.Address <> firstAddress
CptTtl = CptTtl - 1
End If
End With
MsgBox CptTtl
End Function