【问题标题】:group the results of a matching function对匹配函数的结果进行分组
【发布时间】:2019-05-17 16:11:42
【问题描述】:

我在 excel 中有三列,一列包含行 id,下一列是产品序列号,最后一列是序列号。

098 11079851   11079851
110 11089385   25853201
118 11089385   22412115
798 11079851   22412115

我需要做的是查找 B 列中的值是否存在于 C 列中。然后,我需要有一种方法,将在 C 列中找到的 B 列的值分组,以及它们对应的行 ID。

C 列中存在的 11079851 的示例输出: 11079851: 098, 798 也许一个单元格有行 id,接下来的一个单元格有一个对应的 B 列编号,可以在 C 列中找到。

在 excel 中,这是我用来获取 C 列中 B 列的每个单元格值的存在:

=NOT(ISERROR(MATCH(B2,$C$2:$C$1000,0))) 

由于我不需要 excel 版本(即使 2016 年也不会有 textjoin),我尝试了以下答案中的建议公式,

=IF(COUNTIF($C$1:$C$4,B1),B1&": "&TEXTJOIN(",",TRUE,IF($B$1:$B$4=B1,$A$1:$A$4,""))"")

但我收到 509 错误。我错过了什么?

【问题讨论】:

  • 在辅助列中运行您的公式,然后对该列进行排序或过滤
  • 您能详细说明一下吗?我在第四列中有辅助公式,它为我想要的行 ID 返回 TRUE。但是我如何将它们分组以获得预期的输出?在一个单元格中,我需要这样的输出:11079851: 098, 798
  • 您使用的是什么版本的 Excel?
  • 我用的是excel 2016,但是还是没有TEXTJOIN函数...

标签: excel libreoffice-calc openrefine


【解决方案1】:

也许在D1:

=IF(COUNTIF($C$1:$C$4,B1),B1&": "&TEXTJOIN(",",TRUE,IF($B$1:$B$4=B1,$A$1:$A$4,"")),"")

通过CtrlShiftEnter

进入

向下拖动...

请注意,这将在 Excel2016 或更高版本中启用TEXTJOIN()

附:我自己没有TEXTJOIN(),无法测试这是否适合您。

【讨论】:

  • 刚刚测试过,看起来它可以与示例数据一起使用。
  • 建议:不匹配返回空字符串而不是FALSE
  • @JvdV 我将公式复制粘贴到 D1 单元格中,然后按 Ctrl+Shift+Enter。然后单元格是红色的,没有任何计算,因为0ffice 365报告在D1单元格中,有一个错误
  • 您可能还没有启用 TEXT JOIN。看看这是否适用于您:support.office.com/en-us/article/…
  • 我用office 365测试过,发现可以使用TEXTJOIN功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2016-01-23
  • 2014-12-20
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多