Excel INDIRECT函数:如何返回或合并多个单元格区域
Excel合并多区域为数组的解决方案
针对Excel 365/2021及以上版本
方案1:用VSTACK/HSTACK直接堆叠
这两个函数是专门用来合并多区域的,写法简单直接:
要纵向合并H2:H5和H10:H15,公式如下:=VSTACK(INDIRECT("H2:H5"), INDIRECT("H10:H15"))
如果需要横向合并,把VSTACK换成HSTACK即可。
方案2:用TOCOL/TOROW处理多区域数组
INDIRECT支持传入区域数组参数,搭配TOCOL可以把多个区域转成单列数组:=TOCOL(INDIRECT({"H2:H5","H10:H15"}), , TRUE)
第三个参数TRUE会自动忽略空值,不需要的话可以改成FALSE或者直接省略;横向合并用TOROW。
针对旧版Excel(无VSTACK/TOCOL函数)
用CHOOSE结合SEQUENCE来拼接数组,先算出两个区域的总长度(H2:H5共4个单元格,H10:H15共6个,总长度10),再通过序列判断每个位置对应哪个区域:=CHOOSE(IF(SEQUENCE(10)<=4,1,2), INDIRECT("H2:H5"), INDIRECT("H10:H15"))
输入完成后需要按Ctrl+Shift+Enter作为数组公式提交。如果有更多区域,扩展IF的判断逻辑即可,比如三个区域可以用IFS函数。
注意事项
- 确保INDIRECT引用的区域是合法有效的,避免出现无效单元格范围导致报错
- 旧版Excel中数组公式需要手动触发数组输入,365版本会自动溢出结果
- 如果需要保留空值,调整
TOCOL的参数或者直接用VSTACK
内容的提问来源于stack exchange,提问作者ricklane
相关产品推荐
相关产品推荐

