【问题标题】:Excel: Concatenate cells for all rows with a common field valueExcel:连接具有公共字段值的所有行的单元格
【发布时间】:2019-09-04 15:33:22
【问题描述】:

在 Excel 中,对于在 ID 列中具有匹配数据的所有行,我需要将一列中的数据连接到另一列。

然后,我将丢弃除单个项目和第一个项目之外的所有项目,因此我确实需要将数据内联保持在新列中,而不是通过新表或工作表。

例如。

ID 数据组合
苹果苹果
B 梨梨香蕉
B 香蕉梨香蕉
C 樱桃樱桃
D Apple Apple Peach Pear
D Peach Apple Peach Pear
D Pear Apple Peach Pear

我查看了Concatenate (Excel) rows based on common cell, including different columnsExcel: Group values from rows based on common cell value,但这两种解决方案都不是我想要的。

我的工作表大约有 90 列,所以它有点像野兽。

感谢任何关于这一点的指针或指导。

非常感谢

【问题讨论】:

  • 你试过什么?你可以使用工作表函数,但如果你有 Excel 2010+,使用Power Query(又名Get & Transform)是一项微不足道的任务。
  • 感谢@cybernetic.nomad,这几乎就是我一直在尝试的。我认为通过尝试将所有数据保持在同一行中,我的生活变得更加困难。随后,我遵循了您的链接和原始帖子中的建议,并创建了一个包含唯一数据的新表,连接列,然后通过简单的 VLOOKUP 将结果拉回原始表。

标签: excel excel-formula


【解决方案1】:

POWER QUERY 方法 - 适用于 Excel 2010 及更高版本

请参阅此article,了解如何在您的 Excel 版本上使用 Power Query。我的演示使用的是 Excel 2016

假设您已将数据范围放入 Table,使用 From Table 函数将其添加到 Power Query 编辑器,它应该如下所示:

然后使用编辑器Transform标签下的Group By功能对数据进行分组,如下图:

转到公式栏并替换公式如下

= Table.Group(#"Changed Type", {"ID"}, {{"Sum", each Text.Combine([DATA], " "), type text}})

关键是将each后面的List.Sum函数替换为Power Query M语言的Text.Combine函数。

表格将更新为:

然后您可以关闭并加载此查询的输出到新工作表(默认情况下)。

这里是完整的幕后代码,仅供参考。

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"DATA", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Sum", each Text.Combine([DATA], " "), type text}})
in
    #"Grouped Rows"

如果您有任何问题,请告诉我。干杯:)

【讨论】:

  • 也是不使用公式的有效答案。谢谢特里,我不知道这种方法。
猜你喜欢
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 2016-04-29
相关资源
最近更新 更多