Google Sheet中如何将值为1的列名合并为新列(解决公式报错)
如何在Google Sheets中生成Anomali列
需求说明
原始数据集:
| Name | A1 | A2 | A3 | A4 | A5 |
|---|---|---|---|---|---|
| Maria | 0 | 0 | 0 | 1 | 1 |
| Budi | 0 | 1 | 0 | 0 | 0 |
| Maya | 0 | 0 | 0 | 0 | 0 |
需要新增Anomali列,规则为:
- 将对应行中值为1的列名用逗号分隔列出
- 若该行无值为1的列,显示
NULL
目标效果:
| Name | A1 | A2 | A3 | A4 | A5 | Anomali |
|---|---|---|---|---|---|---|
| Maria | 0 | 0 | 0 | 1 | 1 | A4, A5 |
| Budi | 0 | 1 | 0 | 0 | 0 | A2 |
| Maya | 0 | 0 | 0 | 0 | 0 | NULL |
原公式问题分析
你使用的公式报错,主要有两个原因:
- 范围选择错误:原公式中
A2:G2和A$1:G$1包含了Name列(A列),但我们只需要处理A1-A5对应的B-F列数据 - Google Sheets中,这种数组判断的公式需要结合数组类函数来批量处理,否则无法正确运算
解决方案
方案1:单单元格公式(下拉复用)
假设Anomali列在G列,在G2单元格输入以下公式,然后下拉填充到所有行:
=IF(TEXTJOIN(", ", TRUE, IF(B2:F2=1, B$1:F$1, ""))="", "NULL", TEXTJOIN(", ", TRUE, IF(B2:F2=1, B$1:F$1, "")))
输入完成后按Enter即可正常计算。
方案2:数组公式(一次性处理所有行)
如果希望无需下拉,直接生成所有行的结果,在G2单元格输入以下数组公式:
=BYROW(B2:F, LAMBDA(row, IF(TEXTJOIN(", ", TRUE, IF(row=1, B1:F1, ""))="", "NULL", TEXTJOIN(", ", TRUE, IF(row=1, B1:F1, "")))))
这个公式会自动遍历B2到F列的每一行,批量生成Anomali列的内容。
公式说明
TEXTJOIN(", ", TRUE, ...):将符合条件的列名用逗号加空格连接,TRUE参数会忽略空值IF(row=1, B1:F1, ""):判断当前单元格值是否为1,若是则返回对应列名,否则返回空字符串IF(..., "NULL", ...):判断连接后的结果是否为空,为空则显示NULL,否则显示连接后的列名
内容的提问来源于stack exchange,提问作者Sari Devi
相关产品推荐
相关产品推荐

