网友求助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这个二维数组区域转换为一列显示。转换的方向是:行方向优先,列方向其次。