我正在尝试修改我找到的代码。它是一个 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
命令之后填充的,这就是它不起作用的原因。