完成“贪吃蛇”取值排列:用tocol+row+isodd+if+textsplit 函数

网友求助SOS:两列数据,想要按照“贪吃蛇”的方向顺序取值,如何实现?


如下图所示

B1:C4区域为数据源,我们想要重新将其排列成一列数据,放置到E列。


对B1:C4区域排列的规则是

“贪吃蛇”方向,如例子中的箭头指示方向:B1→C1→C2→B2→B3→C3→C4→B4



这属于一种特殊的需求,也可以理解为一种趣味性极高的问题案例。解决方案并不难,下面我们通过公式解决完成。如果大家还有更好的方法,可以评论区讨论



第一步:获取行号


我们输入公式:

=ROW(B1)

并下拉填充公式。


用ROW函数获取B1~B4单元格(即第一行至第四行)的行号。



第二步:判断奇偶


我们外面嵌套一层ISODD函数:

=ISODD(ROW(B1))

并下拉填充公式。


用ISODD判断奇数函数,判断B1~B4单元格(即第一行至第四行)的行号是否为奇数,如果是奇数,返回逻辑值TRUE,如果不是奇数,返回逻辑值FALSE。



第三步:条件判断


外面继续嵌套一层IF条件判断函数:

=IF(ISODD(ROW(B1)),B1&","&C1,C1&","&B1)


IF函数的逻辑是这样的:

如果第一参数判断条件为奇数(逻辑值TRUE),返回B1与","与C1连接后的结果;


如果第一参数判断条件为非奇数(逻辑值FALSE),返回C1与","与B1连接后的结果。


注意观察

两次连接B1&","&C1与C1&","&B1的顺序正好是正向与反向连接的区别。奇数为正向连接,非奇数(偶数)为反向连接



第四步:拆分


外面继续嵌套一层TEXTSPLIT函数:

=TEXTSPLIT(IF(ISODD(ROW(B1)),B1&","&C1,C1&","&B1),",")


用TEXTSPLIT拆分函数,以列分隔符“,”为分列依据,将数据拆分到不同列。



第五步:区域转一列


另起一列,输入公式:

=TOCOL(E1:F4)


TOCOL函数,省略第2、第3参数后,将E1:F4这个二维数组区域转换为一列显示。转换的方向是:行方向优先,列方向其次


原文链接:,转发请注明来源!