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
相关产品推荐
相关产品推荐

