Google Sheets中合并列范围内相似的ArrayFormula函数
合并Google Sheets重复ArrayFormula的解决方案
问题背景
现有包含「Source」工作表的Google Sheets文件,需实现指定输出效果。当前通过5个重复的ArrayFormula完成(仅单元格位置不同,核心逻辑分为两类:直接引用数据源列、将“是/否”转换为1/2),希望减少重复公式,仅用2个甚至1个公式完成全部输出。
数据源(Source工作表)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | John | 是 | Kelly | 否 | 否 |
| 2 | Shelly | 否 | Michelle | 是 | 否 |
| 3 | Michael | 是 | William | 否 | 否 |
目标输出
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | John | 1 | Kelly | 2 | 2 |
| 2 | Shelly | 2 | Michelle | 1 | 2 |
| 3 | Michael | 1 | William | 2 | 2 |
解决方案
方案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:分两个公式处理不同列组
如果必须拆分到两个单元格,可按以下方式操作:
- 在A1输入公式,负责填充A、C列:
=ArrayFormula(HSTACK(Source!A1:A3, Source!C1:C3))
注:此公式会生成横向两列,需确保B列无其他内容,或调整输出位置以匹配A、C列。
- 在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
相关产品推荐
相关产品推荐

