如何用非VBA的Excel公式高效分组整理两列一对多数据?
Excel一对多对应关系高效归集方案(无VBA)
步骤1:提取第一列唯一值
在新工作表(或当前表空白区域的首个单元格,比如D1)输入公式:
=UNIQUE(原表!A:A)
- 该公式会自动提取原表A列的所有唯一项,保留原顺序;
- 如果需要排序,修改为:
=SORT(UNIQUE(原表!A:A))
回车后Excel会自动向下填充所有唯一值。
步骤2:归集对应第二列的关联项
在第一步得到的唯一值右侧单元格(比如E1)输入公式:
=TEXTJOIN(", ", TRUE, FILTER(原表!B:B, 原表!A:A=D1, ""))
鼠标放在单元格右下角,光标变成十字时双击或下拉填充到所有唯一值行即可。
公式说明:
TEXTJOIN(", ", TRUE, ...):把筛选出的多个文本用「逗号+空格」连接,TRUE表示忽略空值;你可以把", "换成其他分隔符,比如要换行显示就用CHAR(10),记得给单元格设置「自动换行」;FILTER(原表!B:B, 原表!A:A=D1, ""):筛选原表中A列等于当前D1单元格值的所有B列内容,无匹配项时返回空字符串。
针对数千行数据的优化建议
- 用精确单元格范围代替整列(比如原表数据是A1:B5000,就写成
UNIQUE(原表!A1:A5000)),减少计算量提升效率; - 若使用Excel 365/2021版本,以上函数支持动态数组,输入公式后会自动扩展,无需手动下拉(TEXTJOIN列需匹配唯一值行数)。
内容的提问来源于stack exchange,提问作者Aleph0
相关产品推荐
相关产品推荐

