Excel 连接 B 列和 C 列,尽管它们在 A 列具有相似的值

Excel 连接 B 列和 C 列,尽管它们在 A 列具有相似的值

你能告诉我如何连接两个列的值,而列Aexcel 中每行的值是否相似?如下所示,我需要将行的值连接到列中CA很相似

在此处输入图片描述

答案1

如果必须使用CONCAT(),则可以使用以下方法:

=LEFT(CONCAT((CHAR(34)&FILTER($B$1:$C21,$A$1:$A21=E1)&CHAR(34))&I1:J1), 
LEN(CONCAT((CHAR(34)&FILTER($B$1:$C21,$A$1:$A21=E1)&CHAR(34))&I1:J1))-1)

它需要UNIQUE()在 E1 中的 A1:C15 范围内使用到SPILL第一列中...唯一...元素的列表,然后输入到某个单元格(例如 F1)中,并向下复制到该列,直到不再存在 E1# 的唯一元素。该公式用于FILTER()获取第二列和第三列中 A 列值与该行的 E1# 结果匹配的所有元素。"(双引号) 字符与一个简单的字符串连接一起添加,将输入构建为CONCAT()。一切都CONCAT()将在其自己的括号 ( ()) 内进行处理,因此它可以以附加到每个元素的方式附加某些内容,而不仅仅是整个结果。

当您将生成的每个字符串元素附加到其中时,就会发生“魔法” CONCAT()。我没有使用单个字符(冒号或逗号),而是使用范围 I1:J1(分别包含冒号和逗号),而是想办法将它们的右半部分更改为其他字符。我本可以使用 而&{":",","}不是 来对它们进行硬编码&I1:J1,但如果您愿意的话...

因此,使用 时,您将面临一个问题CONCAT():由于在每个元素后附加一个字符,因此附加的字符会结束字符串,并且无法对最后一个元素进行不同的处理。因此,对TEXTJOIN()which 的偏好不存在这个问题。在这里,我用锤子将其敲掉:我过去LEFT()保留除最后一个字符之外的所有字符串,因此第二个参数LEFT()是字符串的长度减 1。

如果您可以使用TEXTJOIN(),则以下公式适合您:

=TEXTJOIN($I$1:$J$1,TRUE,CHAR(34)&FILTER($B$1:$C15,$A$1:$A15=E1)&CHAR(34))

再次,您可以对第一个参数(即您使用的分隔符)进行硬编码。我要花点时间说明一下,据我所知,您的 Excel 或 Windows 语言版本可能使用这些分隔符,即同一列单元格之间的“:”和跳转到新行的“,” 。不过,由于您想指定两个分隔符,所以无论如何您都不能依赖系统默认值,所以...

哦,最后的想法:您看到了CHAR(34)用于添加这些双引号的位。我更喜欢使用它们,而不是摆弄要输入多少个双引号才能让 Excel 在前面添加和附加单个"字符。您可能更喜欢摆弄。此外,您可能将它们显示为构建字符串的产物,以便手动创建所需输出的示例,并且并不真正希望所有内容都加双引号。如果是这种情况,在任何一个公式中,您只需删除这些位即可。

相关内容