Excel中将a,b列内容合并转到c列
如下图,a,b列各有一些连续的数据(但个数不确定),想要将整个a,b列内容合并转到c列,应该如何实现

公式及分步说明
公式实现
=IF(ROW()<=COUNTA(A$1:A$100), A1, IF(ROW()<=COUNTA(A$1:A$100)+COUNTA(B$1:B$100), INDEX(B$1:B$100, ROW()-COUNTA(A$1:A$100)), ""))
公式解析
-
第一层判断(提取A列数据):
excel
复制
IF(ROW()<=COUNTA(A$1:A$100), A1, ... )
- 作用:若当前行号 ≤ A列非空单元格数,直接返回A列当前行的值。
- 示例:
- C1(行号1):返回A1的值。
- C2(行号2):返回A2的值,依此类推。
-
第二层判断(提取B列数据):
excel
复制
IF(ROW()<=COUNTA(A$1:A$100)+COUNTA(B$1:B$100), INDEX(B$1:B$100, ROW()-COUNTA(A$1:A$100)), "")
- 作用:
- 若当前行号 ≤(A列数量 + B列数量),通过
INDEX
函数动态定位B列的起始位置。 ROW()-COUNTA(A$1:A$100)
:计算当前行超出A列数据的行数,作为B列的索引。
- 若当前行号 ≤(A列数量 + B列数量),通过
- 示例:
- A列有3个数据,B列有5个数据:
- C4(行号4):
ROW()-3=1
→ 返回B1。 - C5(行号5):
ROW()-3=2
→ 返回B2,依此类推至C8返回B5。
- C4(行号4):
- C9及之后:超出总数量(3+5=8),返回空值
""
。
- A列有3个数据,B列有5个数据:
- 作用:
示例验证
-
场景:
- A列数据:A1=苹果, A2=香蕉, A3=橘子(共3个非空单元格)。
- B列数据:B1=北京, B2=上海, B3=广州, B4=深圳, B5=重庆(共5个非空单元格)。
-
C列结果:
复制
C1: 苹果 (A1) C2: 香蕉 (A2) C3: 橘子 (A3) C4: 北京 (B1) C5: 上海 (B2) C6: 广州 (B3) C7: 深圳 (B4) C8: 重庆 (B5) C9: "" (空值)
公式扩展性
-
支持数据增减:
-
若A列新增2个数据(A1-A5),B列减少为3个(B1-B3),C列自动调整:
复制
C1-C5: A1-A5 C6-C8: B1-B3 C9+: ""
-
-
多列合并:
- 如需合并更多列(如A、B、C列),可嵌套多层
IF
,但需注意Excel 2003的嵌套限制(最多7层)。
- 如需合并更多列(如A、B、C列),可嵌套多层
注意事项
-
数据连续性要求:
-
A列和B列的非空单元格必须连续(如A1-A3填满,中间无空单元格)。
-
若存在中间空值,需改用数组公式(需按
Ctrl+Shift+Enter
):excel
复制
=IFERROR(INDEX(A$1:A$100, SMALL(IF(A$1:A$100<>"", ROW(A$1:A$100)), ROW())), IFERROR(INDEX(B$1:B$100, SMALL(IF(B$1:B$100<>"", ROW(B$1:B$100)), ROW()-COUNTA(A$1:A$100))), ""))
-
-
范围调整:
- 将
A$1:A$100
和B$1:B$100
中的100
改为实际数据最大行数(如A$1:A$500
)。
- 将
最终效果
- 精准定位:B列从第1个单元格开始取值,避免引用错位。
- 动态适应:自动适应A、B列数据数量的变化。
- 高效简洁:无需复杂操作,一次设置即可长期使用。
注:结果由deepseek给出