【问题标题】:Concatenate multiple values into one cell, based on a lookup ID根据查找 ID 将多个值连接到一个单元格中
【发布时间】:2021-01-13 05:22:23
【问题描述】:

我正在尝试根据查找搜索 (ID) 在一个单元格中连接多个值,问题是此 ID 有时可能是单独的,但其他时间可能位于同一单元格中的多个 ID 之间(开始时,中间或以逗号结尾)。我一直在使用下面的公式,但只在 ID 单独时返回第一个值。

当前公式 --> =TEXTJOIN(",",TRUE,IFERROR(XLOOKUP(A2,D:D,E:E),"ID 未找到"))

希望您能提供帮助。 谢谢。

以蓝色、黄色和绿色突出显示的行是预期结果(我手动完成的)。 第 7 行是当前公式的实际结果(错误/不完整)。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    您可以尝试以下方法来获得结果:

    =TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH(A2,D:D,1)),E:E,""))

    一个建议是限制整个列的使用以提高公式速度。

    【讨论】:

    • 谢谢你的帮助兄弟,这个成功了。我很感激。
    【解决方案2】:

    这也可以通过电源查询来完成。我使用了右侧表格中的不同 ID 值,但它应该仍然可以正常工作。

    1. 创建一个表,其 ID 在 Col1 中,要在 Col2 中返回的值
    2. 在 Power Query 中打开表(数据选项卡 > 通过 从表/范围获取和转换数据。 如果没有电源查询,reference this Complete Guide to Installing Power Query.

    Power Query 步骤

    1. 更改 Col 的类型:要返回到 text

      的值
    2. Split Col: ID by Delimeter = ','

    3. 您知道应该有多个 ID 列 (ID.X)。选择所有 ID 列 > 右键单击​​标题 > 选择 Unpivot Other Columns

    4. 删除所有不必要的列

    5. 选择包含您所有 ID 的列 > 右键单击​​并选择 Group By

    6. 在新列名下,输入新的列标题。将运算更改为Sum。对于列,选择包含要返回的值

      的列
    7. 下一步请参考this guide。您需要在公式栏中手动配置 M 代码并将公式从 List.Sum([COL]).. 更改为 Text。合并([COL], ",")..

    8. 最后一步是确保您的新列是文本列,而不是数字。

    我附上了copy of my workbook,希望对您有所帮助。如果没有,我已经从下面的高级编辑器中粘贴了我的代码,以防万一。请务必根据您的工作簿相应地更新表和列名称。

    let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Value to be returned", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "ID", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"ID.1", "ID.2", "ID.3"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID.1", type text}, {"ID.2", type text}, {"ID.3", type text}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Value to be returned"}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Value", "Value to be returned"}),
    #"Grouped Rows" = Table.Group(#"Reordered Columns", {"Value"}, {{"Value.1", each Text.Combine([Value to be returned], ", "), type number}}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Grouped Rows",{{"Value.1", type text}})
    IN
    #"Changed Type 2"
    

    让我知道这是否可行,或者如果您有任何后续问题。

    【讨论】:

    • 感谢您的回答,我也会检查一下并通知您。
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2010-11-12
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多