用CONCATENATE, 合并单元格文本,是多条件的

省 组 代码
A a 111
B a 222
A b 222
C d 555
B c 333
D a 222
A a 777
A a 222
A b 444
B d 222
B b 999
C c 666

这是个数据库

我要得到

省 组 代码
A a 111, 777, 222

用CONCATENATE, 合并代码,是多条件的

you try try
XX =IF(AND(A2=A1, B2=B1), CONCATENATE(F1, ", ", C2), C2)

CONCATENATE是Excel中的函数,sql里用不了的,我给你多环境测试下,下面是sql server版本

img


SELECT 省, 组, STUFF((SELECT ', ' + 代码
                     FROM data
                     WHERE 省 = 'A' AND 组 = 'a'
                     FOR XML PATH('')), 1, 2, '') AS 代码
FROM data
WHERE 省 = 'A' AND 组 = 'a'
GROUP BY 省, 组;


mysql环境:

img

SELECT 省, 组, GROUP_CONCAT(代码 SEPARATOR ', ') AS 代码
FROM data
WHERE 省 = 'A' AND 组 = 'a'
GROUP BY 省, 组;

如果列名是对应的,顺序不变,在excel可以直接使用条件:=IF(A2=A1, CONCATENATE(D1, ", ", C2), C2)

是这样的效果吗

SELECT 省, 组, GROUP_CONCAT(DISTINCT 代码 SEPARATOR ', ') AS 合并代码
FROM 表名
GROUP BY 省, 组;
结果如下:

省 组 代码
A a 111, 777, 222
A b 222, 444
B a 222
B b 999
B c 333
B d 222
C c 666
C d 555
D a 222


或者



在 D 列输入 “省 组 代码”。
在 E 列输入以下公式,并将其拖拽下拉至你的数据范围内的所有行:
=IF(A2=A1, CONCATENATE(D1, ", ", C2), CONCATENATE(D1, " ", B2, " ", C2))


你试试这个吧


=TEXTJOIN(", ", TRUE, IF(($A$2:$A$13=D2)*($B$2:$B$13=E2), $C$2:$C$13, ""))

1、 在 Excel 中插入一列,用于存放合并后的数据。

2、 在新插入的列中,输入下面这个公式:

=IF(A2="A",IF(B2="a",TEXTJOIN(", ",TRUE,IF($C$2:$C$12=D2,$D$2:$D$12,"")),""),"")

但是你要注意一下,这个公式会检查每行的省份和组别是否符合要求(即省份为 "A",组别为 "a"),如果符合要求,则使用 "TEXTJOIN" 函数将所有匹配的代码合并为一串,并将结果输出到新插入的列中。如果不符合要求,则输出空字符串。

3、 在公式中,$C$2:$C$12 和 $D$2:$D$12 分别是数据库的省份和代码列,D2 是当前行的代码,$C$2:$C$12=D2 用于检查每行的代码是否与当前行的代码匹配。

4、 将公式复制到所有的单元格中,以获得所有匹配条件下的代码合并结果。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢