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

求Google Sheets中替代Index-Match的ArrayFormula/Map自动填充公式

解决方案

A列自动扩展公式

直接在A4单元格输入以下公式,新增数据行时会自动计算:

=BYROW(C4:C, LAMBDA(amt, 
  IF(ISBLANK(amt), "", 
    IF(amt>0, $A$1, 
      IFERROR(INDEX($D$3:$G$3, MATCH(amt, INDIRECT("D"&ROW(amt)&":G"&ROW(amt)), 0)), "")
    )
  )
))

逻辑说明

  • BYROW(C4:C, LAMBDA(amt, ...)):遍历C列从第4行开始的每一行,将当前行的金额值传入变量amt
  • 先判断金额是否为空,为空则返回空值
  • 若金额>0,直接返回A1单元格的固定值
  • 若金额<0,用MATCH定位当前行D-G列中金额的位置,再通过INDEX取出D3:G3对应的表头;匹配失败时返回空值

B列自动扩展公式

在B4单元格输入以下公式,同样支持新增行自动生效:

=BYROW(C4:C, LAMBDA(amt, 
  IF(ISBLANK(amt), "", 
    IF(amt>0, 
      IFERROR(INDEX($D$3:$G$3, MATCH(amt, INDIRECT("D"&ROW(amt)&":G"&ROW(amt)), 0)), ""), 
      $A$1
    )
  )
))

逻辑说明

  • 核心结构与A列一致,仅反转判断逻辑:
    • 金额>0时,匹配当前行D-G列的金额并返回对应表头
    • 金额<0时,返回A1单元格的固定值

替代方案(ArrayFormula写法)

如果偏好使用ARRAYFORMULA,可以用以下版本:

A列:

=ARRAYFORMULA(
  IF(ISBLANK(C4:C), "", 
    IF(C4:C>0, $A$1, 
      IFERROR(VLOOKUP(C4:C, TRANSPOSE({D4:G, D3:G3}), 2, 0), "")
    )
  )
)

B列:

=ARRAYFORMULA(
  IF(ISBLANK(C4:C), "", 
    IF(C4:C>0, 
      IFERROR(VLOOKUP(C4:C, TRANSPOSE({D4:G, D3:G3}), 2, 0), ""), 
      $A$1
    )
  )
)

逻辑说明

  • TRANSPOSE({D4:G, D3:G3}):将每行的D-G数据与对应表头转置为两列的查找表
  • VLOOKUP在查找表中匹配金额,返回对应的表头;匹配失败时返回空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:46