Excel基于含空单元格的首列分组合并B列多行为单行的公式求解
Excel按A列分组合并B列内容公式方案
前提:默认数据存储在A、B两列,从第2行开始,你可以根据实际数据规模调整公式里的单元格范围;合并分隔符默认用顿号、,可自行替换为逗号、换行符等。
方案1:Excel 365 / 2021及以上版本(支持动态数组)
无需辅助列,单公式直接输出所有分组的合并结果,自动溢出:
=LET( 分组列,A2:A1000, 内容列,B2:B1000, 非空分组,FILTER(分组列,分组列<>""), 唯一分组,UNIQUE(非空分组), 归属标记,SCAN("",分组列,LAMBDA(a,b,IF(b<>"",b,a))), HSTACK(唯一分组,BYROW(唯一分组,LAMBDA(x,TEXTJOIN("、",TRUE,FILTER(内容列,归属标记=x,""))))) )
如果只需查询单个分组的合并结果,比如查询A17.9 未特指的神经系统结核病的合并内容,直接用以下公式即可:
=TEXTJOIN("、",TRUE,FILTER(B:B,SCAN("",A:A,LAMBDA(a,b,IF(b<>"",b,a)))="A17.9 未特指的神经系统结核病",""))
方案2:Excel 2019及更早版本
需要先新增辅助列处理A列空值:
- 选中C列作为辅助列,C2单元格输入公式
=IF(A2<>"",A2,C1),下拉填充到所有数据行,此时C列会自动把空单元格填充为对应归属的分组值 - 要合并对应分组内容时,输入公式
=TEXTJOIN("、",TRUE,IF(C:C="目标分组名称",B:B,"")),输入完成后按Ctrl+Shift+Enter组合键数组回车生效
注意事项
- 如需合并后内容换行,把公式里的分隔符
"、"替换为CHAR(10),再将目标单元格设置为「自动换行」即可 - 可根据实际数据量调整公式里的行范围,避免引用过多无效行导致计算卡顿
内容的提问来源于stack exchange,提问作者The Art of Squi-Fu
相关产品推荐
相关产品推荐

