分享

69用Excel函数将多个一维数组合并成一维数组~

 asaser 2022-05-14
今天给大家分享的表格技巧是有关函数数组的:将多个一维数组合并成一维数组。如果你对函数数组比较了解,应该可以看懂;如果不了解,推荐先看一下往期教程▼

图片

 ↑ 关于函数数组,这篇教程足够经典

我举个例子。

有两个一维数组:



{1;2;12}{"a";"b";"ab"}

需要将它们合并成一个一维数组:


{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函数  

最后了,摊手,耸肩,不要问我这个技巧有啥用,你问我,我问谁去啊…
 ̄□ ̄||
坦白的说呢,Excel函数的数组作为数据结构是非常弱小的,甚至不足以支撑新锐函数LAMBDA的递归应用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多