Новичок в VBA, пытается создать функцию, которая по существу ищет столбец для определенных значений.Если он находит попадание, он возвращает соответствующий столбец, иначе возвращает пробел.При способе форматирования листа одна ячейка может иметь несколько значений (разделенных ALT + ENTER, поэтому каждое новое значение находится на отдельной строке).
Код, который я использовал в настоящее время, работает, но имеет проблему: так как яя использую inStr, код также возвращает частичные совпадения (которые я не хочу).
Example:
**Column to Search (one cell)**
ABC
AB
B
Когда я запускаю код, чтобы найти AB, он будет возвращать совпадения как для AB, так и для ABC, так как AB является частьюэтого
Идеальным решением было бы сначала разделить ячейки на основе ALT + ENTER и выполнить цикл по всем значениям на ячейку, а затем вернуть желаемое значение.Но не так, как будет выглядеть синтаксис.
Текущий код
Function newFunc(Search_string As String, Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
Dim mRange As Range
Dim mValue As String
For i = 1 To Search_in_col.Count
If InStr(1, Search_in_col.Cells(i, 1).Text, Search_string) <> 0 Then
If (Return_val_col.Cells(i, 1).MergeCells) Then
Set mRange = Return_val_col.Cells(i, 1).MergeArea
mValue = mRange.Cells(1).Value
result = result & mValue & ", "
Else
result = result & Return_val_col.Cells(i, 1).Value & ", "
End If
End If
Next
Пример: добавление примера для лучшего объяснения ситуации