【发布时间】:2013-03-28 17:13:11
【问题描述】:
我正在尝试修改我找到的代码。它是一个 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 命令之后填充的,这就是它不起作用的原因。
【问题讨论】: