【问题标题】:Lookup multiple values and return a single string查找多个值并返回单个字符串
【发布时间】:2017-08-20 07:09:37
【问题描述】:

我找到了如何查找多个值并将它们作为列表返回(一个单元格中的一个值)。但我需要在单个单元格中显示找到的列表(作为带有断线的字符串);最好在每个值后加上分号。

例如:

源列表(一个值 - 一个单元格):

A
A
B
B
B
C

结果(显示在单个单元格中):

A;
B;
C;

谢谢!

【问题讨论】:

  • 据我所知,您需要 VBA。
  • 有没有办法将所有数组公式元素连接成一个字符串?例如。据我所知,我们可以对所有数组元素求和。

标签: arrays excel lookup


【解决方案1】:

您需要提取唯一值,然后连接这些值。

a2:a7 = {a, a, b, b, b, c} 时,在b2 输入这个并点击ctrl + shift + enter

=IFERROR(INDEX($A$2:$A$7,MATCH(SUM(COUNTIF(B$1:B1,$A$2:$A$7)),COUNTIF($A$2:$A$7,"<"&$A$2:$A$7),0)),"")

然后复制b2 并将其粘贴到b3:b7。现在您有了一个唯一值列表。这个方法来自this answer

现在您有了列表,您只需加入他们。在c2 输入此内容。

=IF(B2="", "", B2&";"&CHAR(10))
&IF(B3="", "", B3&";"&CHAR(10))
&IF(B4="", "", B4&";"&CHAR(10))
&IF(B5="", "", B5&";"&CHAR(10))
&IF(B6="", "", B6&";"&CHAR(10))
&IF(B7="", "", B7&";"&CHAR(10))

看图。

我知道这很糟糕。但是 Excel 中没有内置公式。其他没有 VBA 的解决方法是 herethere,以防万一。

顺便说一句,Google 电子表格将所有这些作为内置函数提供。就一行。

=join(";"&char(10), filter(unique(A2:A7), not(isblank(unique(A2:A7)))))&";"

【讨论】:

  • 不知道是错字还是视觉隐喻,但 ulgy 的加分。
  • 如果这是我在办公室的任务,我会使用 Google 电子表格来完成。
  • 啊,这是一个错字...我应该修复它吗? :(
  • 不,它是完美的。基本问题是 OP 将源指定为全部在一个单元格中。 (源列表(一个值 - 一个单元格))
【解决方案2】:

在用户定义的函数(又名 UDF)中使用静态字典对象并覆盖所有重复项。

Option Explicit

Function udfUniqueList(str As String, _
                       delim As String, _
                       Optional cs As Boolean = False)
    Dim a As Long, arr As Variant
    Static dict As Object
                      
    If dict Is Nothing Then
        Set dict = CreateObject("Scripting.Dictionary")
    End If
    dict.RemoveAll
    dict.CompareMode = IIf(cs, vbBinaryCompare, vbTextCompare)
    
    arr = Split(str, Chr(10))
    For a = LBound(arr) To UBound(arr)
        dict.Item(arr(a)) = a
    Next a
    
    udfUniqueList = Join(dict.keys, delim) & delim

End Function
    

静态对象最适合将复制到长列中的函数,因为不必重新创建对象以重复使用。

记得在目标单元格中​​打开“自动换行”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多