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

如何用单个公式将命名区域range1按行拼接为单列区域?

用单个公式实现多行多列区域的逐行拼接

针对Excel 365/2021及以上版本(支持动态数组)

直接在目标区域的第一个单元格输入以下公式,会自动生成3×1的拼接结果区域,无需下拉填充:

=BYROW(range1, LAMBDA(r, TEXTJOIN("", TRUE, r)))
  • BYROW:遍历range1中的每一行
  • LAMBDA(r, ...):对每一行r执行拼接操作
  • TEXTJOIN("", TRUE, r):将当前行的所有单元格内容以空字符串为分隔符拼接,TRUE表示忽略空单元格(若需要保留空值可改为FALSE)

针对旧版Excel(不支持动态数组)

选中目标3×1区域(比如D1:D3),输入以下公式后按Ctrl+Shift+Enter(数组公式输入),即可一次性生成所有行的拼接结果:

=TEXTJOIN("", TRUE, INDEX(range1, ROW(D1:D3)-ROW(D1)+1, COLUMN(range1)-MIN(COLUMN(range1))+1))
  • INDEX(range1, ...):按行号和列号提取对应单元格内容
  • ROW(D1:D3)-ROW(D1)+1:生成1到3的行序号,对应range1的每一行
  • COLUMN(range1)-MIN(COLUMN(range1))+1:生成1到3的列序号,对应range1的每一列

用于后续比对查找的扩展用法

如果要通过拼接后的字符串反向匹配range1中的对应行,可结合以下公式实现类似自定义匹配的INDEX功能:

  • 365/2021版本:
=XLOOKUP("AppleBlueMonkey", BYROW(range1, LAMBDA(r, TEXTJOIN("", TRUE, r))), range1, "未找到")

该公式会返回range1中对应拼接字符串的整行数据,若只需返回某一列(比如第一列),可将range1替换为INDEX(range1,,1)。

  • 旧版本:
    选中目标单元格,按Ctrl+Shift+Enter输入数组公式:
=INDEX(range1, MATCH("AppleBlueMonkey", TEXTJOIN("", TRUE, INDEX(range1, ROW(range1)-MIN(ROW(range1))+1, COLUMN(range1)-MIN(COLUMN(range1))+1)), 0), COLUMN(range1)-MIN(COLUMN(range1))+1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:22:46