来自:EXCEL(ID:lovexcel)
作者:彬哥-Bingo
收到粉丝的问题:两列数据如何插入成为一列呢?
本文介绍两列数据如何像齿轮一样插入、合并成为一列。
效果如下
▼
方法:
ISODD+INDIRECT+ROW+INT+IF
▎01
■ A列单元格分别输入:1、2、3、4、5、6
■ B列单元格分别输入:a、b、c、d、e、f
■ 单元格C1输入如下公式:
=IF(ISODD(ROW()),INDIRECT("A"&(ROW()-INT((ROW()+1)/2)+1)),INDIRECT("B"&(ROW()-INT((ROW()+2)/2)+1)))
公式输入完毕,按回车,并向下复制完成。如下图所示。
▎02
公式原理解析:
为了方便理解,将公式的运算过程和结果,分别粘贴到单元格中。
(1)
单元格D1输入公式:
=ROW()-INT((ROW()+1)/2)+1
公式输入完成按回车,并向下复制。如下图所示。
ROW函数的作用返回目标数据的行号
由上图D列返回的运算结果可以看出,公式得出一个数字序列:1223344556677....
(2)单元格E1输入公式:
=INDIRECT("A"&(ROW()-INT((ROW()+1)/2)+1))
公式输入完成按回车,并向下复制。如下图所示。
这个公式是引用A列的内容,从上图E列返回的运算结果可以看出,公式也是得出一个数字序列:1223344556677....这个数字序列表面看跟D列一样,但E列的将随A列的数值变动而变动。
(3)单元格F1输入公式:
=ROW()-INT((ROW()+2)/2)+1
公式输入完成按回车,并向下复制。如下图所示。
由上图F列返回的运算结果可以看出,公式得出一个数字序列:
11223344556677....,根D列对比可以看出,F列和D列的值错开一个位置。
(4)单元格G1输入公式:
=INDIRECT("B"&(ROW()-INT((ROW()+2)/2)+1))
公式输入完成按回车,并向下复制。如下图所示。
这个公式是引用B列的内容,从上图G列返回的运算结果为:aabbccddeeff...,运算结果将随B列的内容变动而变动。
(5)单元格H1输入公式:
=ISODD(ROW())
公式输入完成按回车,并向下复制。如下图所示。
ISODD,用于检验指定值是否为奇数,如果指定值为奇数,则返回TRUE;
从上图H列返回的运算结果可以看出,单数行返回TRUE,双数行返回FALSE.
(6)单元格H1输入完整公式:
=IF(ISODD(ROW()),INDIRECT("A"&(ROW()-INT((ROW()+1)/2)+1)),INDIRECT("B"&(ROW()-INT((ROW()+2)/2)+1)))
公式输入完成按回车,并向下复制。如下图所示。
最外层IF函数,如”ISODD(ROW())“为成立,为TRUE时则返回“INDIRECT("A"&(ROW()-INT((ROW()+1)/2)+1))”返回的值,即E列的值;如”ISODD(ROW())“为不成立,为FALSE时则返回"INDIRECT("B"&(ROW()-INT((ROW()+2)/2)+1))",即G列的值。
如I列的运算结果可以看出,AB两列数据像齿轮一样合并为一列。
PS:I列最后出现“0”,去零公式:=IF(ROW()>(COUNTA(A:A)+COUNTA(B:B)),"",IF(ISODD(ROW()),INDIRECT("A"&(ROW()-INT((ROW()+1)/2)+1)),INDIRECT("B"&(ROW()-INT((ROW()+2)/2)+1))))
●进入公众号输入
704
发送,即可阅读本文
●进入公众号输入
m
发送,获取全部文章目录
●进入公众号输入
c
发送,获取动画教程