Excel多行文本合并公式需求:基于前两列值合并多行文本
Excel多行文本合并公式需求:基于前两列值合并多行文本
嘿,刚好之前帮朋友处理过几乎一模一样的Excel合并需求,给你整理了几个实用的公式方案,完美解决基于前两列(No.和Type)合并多行Comment的问题~
先看你的数据源
| No. | Type | Line No. | Comment | Date |
|---|---|---|---|---|
| 532549 | Fault | 1000 | Case 32549 - No Output | 5/25/2021 |
| 532549 | Resolution | 1000 | Job - No Output | 5/25/2021 |
| 532549 | Resolution | 2000 | Problem - Firmware Mismatch | 5/25/2021 |
| 532549 | Resolution | 3000 | Repair - Update to Current Firmware (Unit Still Running Very | 5/25/2021 |
| 532549 | Resolution | 4000 | Old 1.1.15) | 4/24/2021 |
| 532549 | Resolution | 5000 | Note - If transmission fails, reboot unit and retry | (假设此处为完整文本) |
预期合并效果
你想要的应该是这样:把No.和Type完全相同的行对应的Comment文本合并到一起,包括像Line 3000和4000那种拆分的内容也要连起来:
| No. | Type | Merged Comment |
|---|---|---|
| 532549 | Fault | Case 32549 - No Output |
| 532549 | Resolution | Job - No Output; Problem - Firmware Mismatch; Repair - Update to Current Firmware (Unit Still Running Very Old 1.1.15); Note - If transmission fails, reboot unit and retry |
方案1:Excel 365/2021 专属动态数组方案(最省心)
如果你用的是新版Excel(365或2021),可以一步到位:
提取唯一的No.+Type组合:在空白单元格(比如G2)输入:
=UNIQUE(A2:B7)回车后会自动生成所有不重复的编号+类型对,不用手动下拉。
合并对应Comment:在旁边的H2单元格输入:
=BYROW(G2#:H2#, LAMBDA(x, TEXTJOIN("; ", TRUE, IF((A2:A7=x[1])*(B2:B7=x[2]), C2:C7, ""))))这个公式会自动遍历所有唯一组合,把匹配到的Comment用分号加空格连接起来,而且会自动忽略空值(TRUE参数的作用)。
方案2:兼容旧版Excel的数组公式
如果你的Excel版本没有动态数组功能(比如2019及更早),用这个数组公式:
在空白单元格(比如D2)输入:
=TEXTJOIN("; ", TRUE, IF((A$2:A$7=A2)*(B$2:B$7=B2), C$2:C$7, ""))
输入完后不要直接回车,按住Ctrl+Shift+Enter组合键确认,然后下拉填充到所有行。
如果你的Excel连TEXTJOIN都没有(比如2016及更早),可以用PHONETIC函数替代(仅限文本内容):
=PHONETIC(IF((A$2:A$7=A2)*(B$2:B$7=B2), C$2:C$7&"; ", ""))
同样需要按Ctrl+Shift+Enter确认数组公式,下拉填充。
小提示
- 可以修改分隔符:把公式里的
"; "改成你需要的格式,比如换行用CHAR(10),记得给单元格设置自动换行。 - 文本长度:Excel单元格支持最多32767个字符,大部分场景下完全够用。
备注:内容来源于stack exchange,提问作者dark_tribute381




