Я пытаюсь изменить найденный код. Это функция VBA, которая ищет все экземпляры значения ячейки, а затем возвращает значение ячейки из каждого экземпляра в одну ячейку. Я пытаюсь вернуть только те значения, которые еще не были найдены, и поэтому в итоге получаю ячейку, не содержащую дубликатов.
Исходный код:
Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
result = result & " " & Return_val_col.Cells(i, 1).Value
End If
Next
Lookup_concat = Trim(result)
End Function
Я изменил код для этого, я сделал редактирование отступом вместо того, чтобы держать его в той же строке, чтобы было легче читать
Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string
And Not (InStr(1, result, Return_val_col.Cells(i, 1).Value)) Then
result = result & " " & Return_val_col.Cells(i, 1).Value
End If
Next
Lookup_concat = Trim(result)
End Function
Эта версия наиболее близка к функции PHP !strstr
(что я понимаю), и, возможно, я ошибаюсь, пытаясь применить методы PHP к VBA. Я думаю, что строка результата фактически заполняется ПОСЛЕ моей команды Instr
, поэтому она не работает.