↑ 关于函数数组,这篇教程足够经典
我举个例子。
有两个一维数组:
需要将它们合并成一个一维数组:
讯享网{1;2;12;"a";"b";"ab"}
如果需要将两个一维数组合并成二维数组,可以用IF函数:
=IF({1,0},{1;2;12},{"a";"b";"ab"})
而合并成一维数组呢?
也可以用IF函数。
公式看不全可以左右拖动…▼
讯享网=IF(ROW(1:6)<4,{1;2;12},LOOKUP(ROW(1:6),ROW(4:6),{"a";"b";"ab"}))
公式判断ROW(1:6)是否小于4,如果条件成立则返回第1个一维数组{1;2;12},否则运行LOOKUP函数。
LOOKUP的查找值是ROW(1:6),查找区域是ROW(4:6),ROW(1:3)查无结果返回错误值,ROW(4:6)返回第2个一维数组{"a";"b";"ab"}
因此以上公式等同于:
=IF(ROW(1:6)<4,{1;2;12},{#N/A;#N/A;#N/A;"a";"b";"ab"})
于是最终返回一维数组:
讯享网{1;2;12;"a";"b";"ab"}
……

这是2个一维数组合并,如果是3个、4个……更多个呢?
比如,将下图所示A1:C3区域3个纵向一维数组合并为E1:E9所示的一个纵向一维数组。
这时候继续使用IF+LOOKUP的函数组合就不是很方便了。
更推荐使用FILTERXML+TEXTJOIN的组合套路。
TEXTJOIN是2019开始才有的函数 ▼
=FILTERXML("<a><b>"&TEXTJOIN("</b><b>",1,TRANSPOSE(A1:C3))&"</b></a>","a/b")
首先使用TRANSPOSE函数将A1:C3转置,然后使用TEXTJOIN函数以</b><b>为分隔符合并,最后用FILTERXML按"a/b"为节点拆分——这个解释如果看不懂的话,看我手指的方向👇回看一下FILTERXML函数教程吧,微微笑
(* ̄︶ ̄)
↑ FILTERXML函数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183146.html