gpt4 book ai didi

Excel 宏 VBA 未指示

转载 作者:行者123 更新时间:2023-12-04 21:25:37 25 4
gpt4 key购买 nike

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

最佳答案

我相信您正在尝试使用两个 If s。您只想添加基于范围内的字符串,并且仅在尚未添加字符串的情况下添加。

尝试这个:

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 (Instr(1, Search_in_col.Cells(i, 1), Search_string) > 0 )
And ( InStr(1, result, Return_val_col.Cells(i, 1).Value) = 0 ) Then

result = result & " " & Return_val_col.Cells(i, 1).Value

End If

Next

Lookup_concat = Trim(result)

End Function

关于Excel 宏 VBA 未指示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com