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

Google Sheets中基于条件的多列动态拼接ArrayFormula问题

解决Google Sheets动态拼接列值的问题

需求回顾

  • 当K列为空时,拼接C、H、I、J列的值
  • 当J列和K列均填充内容时,拼接C、H、I、K列的值

修改后的公式方案

精准匹配需求的公式

=ARRAYFORMULA(QUERY(BYROW(
  {LOOKUP(ROW(C5:C), ROW(C5:C)/(C5:C<>""), C5:C), H5:H, I5:I, IF(K5:K="", J5:J, IF(J5:J<>"", K5:K, J5:J))},
  LAMBDA(r, TEXTJOIN("-", 1, r))
), "SELECT Col1 WHERE Col1 IS NOT NULL"))

简化版(K列非空则优先用K)

如果场景中只要K列有内容就优先使用K列值(无需严格判断J列状态),可以用更简洁的公式:

=ARRAYFORMULA(QUERY(BYROW(
  {LOOKUP(ROW(C5:C), ROW(C5:C)/(C5:C<>""), C5:C), H5:H, I5:I, IF(K5:K<>"", K5:K, J5:J)},
  LAMBDA(r, TEXTJOIN("-", 1, r))
), "SELECT Col1 WHERE Col1 IS NOT NULL"))

公式解析

  • LOOKUP 部分:保留原公式逻辑,处理C列可能存在的合并单元格或空行,确保每行都能获取对应的C列非空值。
  • IF 判断逻辑:
    • 精准版:先检查K列是否为空,为空则用J列;K列非空时,仅当J列也有内容时才切换为K列,完全匹配需求。
    • 简化版:直接判断K列状态,非空则用K列,否则用J列,适配更宽松的场景。
  • BYROW + TEXTJOIN:逐行对组合列执行拼接,TEXTJOIN("-", 1, r) 中的1会自动忽略空值,避免出现多余连字符。
  • QUERY 过滤:筛选掉拼接后为空的行,替代原公式的LIMIT逻辑,适配动态行场景更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:35:34