gpt4 book ai didi

Excel VLookup 有多个结果,但没有重复

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

this question ,票数最高(最佳)answer作者 aevanko (参见下面的代码)有效,但它不考虑重复值 - 它只是多次包含它们。

如何调整此功能以仅显示不同的值/结果?

Function VLookupAll(ByVal lookup_value As String, _
ByVal lookup_column As range, _
ByVal return_value_column As Long, _
Optional seperator As String = ", ") As String

Dim i As Long
Dim result As String

For i = 1 To lookup_column.Rows.count
If Len(lookup_column(i, 1).text) <> 0 Then
If lookup_column(i, 1).text = lookup_value Then
result = result & (lookup_column(i).offset(0, return_value_column).text & seperator)
End If
End If
Next

If Len(result) <> 0 Then
result = Left(result, Len(result) - Len(seperator))
End If

VLookupAll = result

End Function

最佳答案

为了避免在结果字符串中已经存在的情况下向结果字符串中添加内容,只需在添加之前检查它是否已经在字符串中:

Function VLookupAll(ByVal lookup_value As String, _
ByVal lookup_column As range, _
ByVal return_value_column As Long, _
Optional separator As String = ", ") As String

Dim i As Long
Dim result As String

For i = 1 To lookup_column.Rows.count
If Len(lookup_column(i, 1).text) <> 0 Then
If lookup_column(i, 1).text = lookup_value Then
If Instr(separator & result & separator, _
separator & lookup_column(i).Offset(0, return_value_column).Text & separator) = 0 Then
result = result & lookup_column(i).Offset(0, return_value_column).Text & separator
End If
End If
End If
Next

If Len(result) <> 0 Then
result = Left(result, Len(result) - Len(separator))
End If

VLookupAll = result

End Function

这只有在您使用非空白分隔符时才能可靠地工作,并且您的数据实际上都不包含分隔符。

如果您希望将具有相同值的不同情况(例如“ABC”和“Abc”)视为“重复”,则需要更改 If声明来自
If Instr(separator & result & separator, _
separator & lookup_column(i).Offset(0, return_value_column).Text & separator) = 0 Then


If Instr(separator & LCase(result) & separator, _
separator & LCase(lookup_column(i).Offset(0, return_value_column).Text) & separator) = 0 Then

但是您对查找值的测试(即 If lookup_column(i, 1).text = lookup_value Then )当前区分大小写,因此您可能不希望通过不区分大小写的匹配检测到“重复项”。

关于Excel VLookup 有多个结果,但没有重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392621/

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