You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets如何优雅将值为1的对应列名转为数组 无需逐列引用

Google Sheets 批量生成特征数组方案

不用逐列写判断分支,用数组遍历+筛选的逻辑可以实现一次写公式、自动适配所有特征列,后续新增/删除特征列不需要修改公式逻辑。

通用公式

把公式放在Array列的首个数据单元格(示例里是E2),会自动向下溢出整列结果:

=ARRAYFORMULA(
  IF(
    ISBLANK(A2:A),
    "",
    "[" &
    BYROW(
      B2:INDEX(2:1000,COUNTA(1:1)),
      LAMBDA(single_row,
        IF(
          SUM(single_row)=0,
          "",
          JOIN(",",FILTER(CHAR(34)&FILTER(1:1,1:1<>"")&CHAR(34),single_row=1))
        )
      )
    )
    & "]"
  )
)

逻辑说明

  • 自动适配列范围:B2:INDEX(2:1000,COUNTA(1:1)) 会自动识别第一行(表头行)所有非空列名,锁定从B列开始的全部特征列范围,后续新增特征列只要在第一行填好列名,公式会自动纳入计算,不需要手动调整列引用
  • 逐行批量处理:BYROW搭配LAMBDA逐行遍历特征取值,替代原来逐列写IF拼接的冗余逻辑
  • 自动处理全0行:通过SUM(single_row)=0判断当前行所有特征值都是0时,直接拼接返回[]
  • 统一格式处理:FILTER直接筛选出当前行值为1对应的列名,统一包裹双引号后用逗号拼接,不需要给每列单独写拼接规则

适配调整

如果你的表格结构和示例不一致,只需要修改2处参数:

  • 把公式里的B2改成你第一个特征列的首个数据单元格
  • 把公式里所有1:1替换成你实际存放特征列名的表头行号即可

如果需要和你原公式输出完全一致的尾逗号格式(即数组最后一个元素后也带逗号),把JOIN部分的代码改成JOIN(",",FILTER(...)) & ","即可,默认公式输出的是无尾逗号的标准JSON数组格式。

内容的提问来源于stack exchange,提问作者Zin Yosrim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:20:02