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

Google Sheets中合并列范围内相似的ArrayFormula函数

合并Google Sheets重复ArrayFormula的解决方案

问题背景

现有包含「Source」工作表的Google Sheets文件,需实现指定输出效果。当前通过5个重复的ArrayFormula完成(仅单元格位置不同,核心逻辑分为两类:直接引用数据源列、将“是/否”转换为1/2),希望减少重复公式,仅用2个甚至1个公式完成全部输出。

数据源(Source工作表)

ABCDE
1John是Kelly否否
2Shelly否Michelle是否
3Michael是William否否

目标输出

ABCDE
1John1Kelly22
2Shelly2Michelle12
3Michael1William22

解决方案

方案1:单个公式覆盖全部输出区域(推荐)

在A1单元格输入以下公式,自动填充A1:E3整个区域,无需其他公式:

=ArrayFormula(IF(MOD(COLUMN(A:E),2)=1, Source!A:E, IF(Source!A:E="是",1,2)))

逻辑说明:

  • COLUMN(A:E) 返回当前列的列号(A=1, B=2, ..., E=5)
  • MOD(列号,2)=1 判断是否为奇数列(A、C列),这类列直接引用Source工作表的对应数据
  • 偶数列(B、D、E列)执行条件转换:将单元格内容为“是”的替换为1,其余替换为2

如果实际场景中需要指定的列不是奇偶规律,可改用列号匹配,例如指定A、C列直接引用,其他列转换:

=ArrayFormula(IF(COLUMN(A:E) IN {1,3}, Source!A:E, IF(Source!A:E="是",1,2)))

方案2:分两个公式处理不同列组

如果必须拆分到两个单元格,可按以下方式操作:

  1. 在A1输入公式,负责填充A、C列:
=ArrayFormula(HSTACK(Source!A1:A3, Source!C1:C3))

注:此公式会生成横向两列,需确保B列无其他内容,或调整输出位置以匹配A、C列。

  1. 在B1输入公式,负责填充B、D、E列:
=ArrayFormula(HSTACK(IF(Source!B1:B3="是",1,2), IF(Source!D1:D3="是",1,2), IF(Source!E1:E3="是",1,2)))

注:该公式会从B1开始横向填充三列,正好对应B、D、E列的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:35:12