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

寻求通用的Excel多行多列按行拼接字符串并返回数组格式的简洁公式

寻求通用的Excel多行多列按行拼接字符串并返回数组格式的简洁公式

嗨,这个需求太实用了——当数据行和列都很多时,手动写A1&B1&C1这种公式确实会疯掉😅。你提到的=concat(OFFSET(A1,,,2,3))之所以达不到效果,是因为CONCAT会把整个区域的所有单元格按顺序拼成一个大字符串,而不是按行拆分返回数组。下面给你几个不同版本Excel适配的简洁方案:

方案1:Excel 365/2021(支持动态数组+LAMBDA)

这是最推荐的通用写法,简洁且自动适配数据区域:

=BYROW(A1:C2, LAMBDA(row, TEXTJOIN("", TRUE, row)))
  • 原理:BYROW会遍历你指定的区域(比如A1:C2)的每一行,把当前行传给LAMBDA定义的row变量;
  • TEXTJOIN("", TRUE, row)负责把当前行的所有单元格内容拼接起来:第一个参数""表示无分隔符(如果需要分隔符,改成","或其他即可),TRUE表示忽略空单元格(要保留空单元格就改成FALSE);
  • 优势:公式是动态的,只要你的数据区域扩展,返回的数组结果会自动跟着扩展,不用手动调整。

方案2:旧版Excel(无动态数组支持)

如果你的Excel版本不支持BYROW和LAMBDA,可以用数组公式(输入后按Ctrl+Shift+Enter确认,注意不要直接按Enter):

=INDEX(PHONETIC(OFFSET(A1:C2, ROW(A1:A2)-1, 0, 1, COLUMNS(A1:C2))), ROW(A1:A2))
  • 注意:PHONETIC函数只对文本型内容有效,如果单元格是数字,需要先把数字转换成文本(比如给区域加&"",改成A1:C2&"");
  • 局限性:如果数据中有空单元格,PHONETIC会跳过,且无法自定义分隔符,适合简单的纯文本拼接场景。

另外,如果你需要自定义分隔符且用旧版Excel,也可以用TEXTJOIN结合INDEX的数组写法,但相对繁琐一些,不如新版的方案简洁。

备注:内容来源于stack exchange,提问作者8平民

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:04:12