求助:在Excel中实现Oracle LISTAGG等价的按键合并功能
Excel 实现类似Oracle LISTAGG 的分组拼接功能
源数据
| Col1 | Col2 |
|---|---|
| key1 | 123 |
| key1 | 234 |
| key1 | 345 |
| key2 | abc |
| key2 | pqr |
| key3 | xyz |
预期结果
| Col1 | Concatvalues |
|---|---|
| key1 | 123;234;345 |
| key2 | abc;pqr |
| key3 | xyz |
简化实现方法
方法1:Excel 365/2021+ 动态数组版(最简便)
提取唯一键:在空白单元格(如D2)输入公式:
=UNIQUE(A2:A7)公式会自动溢出生成所有唯一的
Col1值(key1、key2、key3)。批量拼接对应值:在E2单元格输入公式,直接生成所有拼接结果:
=BYROW(UNIQUE(A2:A7), LAMBDA(x, TEXTJOIN(";", TRUE, FILTER(B2:B7, A2:A7=x))))逻辑说明:
UNIQUE提取唯一分组键BYROW遍历每个唯一键,执行拼接逻辑FILTER筛选出当前键对应的Col2值TEXTJOIN用分号;拼接筛选结果,TRUE参数忽略空值
方法2:旧版Excel(无动态数组)
- 手动提取唯一键:通过「数据」选项卡的「高级筛选」提取
Col1的唯一值,放到D列。 - 逐个拼接值:在E2单元格输入数组公式,按
Ctrl+Shift+Enter确认,然后下拉填充:
逻辑说明:=TEXTJOIN(";", TRUE, IF(A$2:A$7=D2, B$2:B$7, ""))IF函数匹配当前键对应的Col2值,TEXTJOIN完成拼接,数组公式会遍历所有数据行。
注:你的预期结果中key1的拼接值写为
123;246;345,但源数据对应是123;234;345,若需对Col2值做计算(如234→246),可在公式中对B列数据做对应修改即可。
内容的提问来源于stack exchange,提问作者Ra-V
相关产品推荐
相关产品推荐

