如何将两个 Excel 列合并为一列(另一种方法)

如何将两个 Excel 列合并为一列(另一种方法)

A我有一个如和列所示的列表B,并且我想要合并如所示D

在此处输入图片描述

我怎样才能做到这一点?

这里,字母 (a、b、c、d、e、f、g、h) 仅用作占位符。我真正需要的column D是 A1、B1、A2、B2、A3、B3、A4、B4。

答案1

一个不太简单且易于维护的基于公式的解决方案是在 D 中使用以下公式:

=INDEX($A$1:$B$5,QUOTIENT(ROW()+1,2),IF(MOD(ROW(),2)=0,2,1))

让我添加格式并分部分解释:

=INDEX(
   $A$1:$B$5,
   QUOTIENT(ROW()+1,2),
   IF(MOD(ROW(),2)=0,2,1)
   )

因此,INDEX将按坐标返回一定范围内的单元格。参数为:

  1. $A$1:$B$5- 范围,包含所需的两列。
  2. QUOTIENT(ROW()+1,2)- 将当前行号除以 2 的整数倍。这样得到的行号范围是 (1)。
  3. IF(MOD(ROW(),2)=0,2,1)- (2) 中的整数除法的余数。这给出了 (1) 范围内的列号。

该解决方案并不是真正灵活,需要稍加改进才能支持:

  • 超过两列
  • 不相邻的列
  • 结果在特定范围内(例如从 D5 开始)

答案2

如果您不介意使用宏,这里有一个想法。

Sub MergeColumnsAlternating()
  Dim total, i, rowNum as Integer
  total = 4 '' whatever number of rows you need to merge.
  i = 1
  For rowNum = 1 to total
    Range("D" & i) = Range("A" & rowNum)
    i = i + 1
    Range("D" & i) = Range("B" & rowNum)
    i = i + 1
  Next rowNum
End Sub

我对 VBA 非常生疏(我几乎不记得它了),我已经很多年没有用过 Office 了,但无论如何我都想做出贡献。

答案3

构建于default locale 的优秀答案,(并且响应 AHC 的要求)您可以通过定义一些变量和调整公式来增加灵活性。

让我们从默认语言环境的结果开始。

在此处输入图片描述

不幸的是,如果您有超过 2 列,或者您的输出不是从与您的范围相同的行开始,那么这里使用的公式将会中断。

让我们定义一些变量来指定您希望输出开始的行以及范围内的列数。

在此处输入图片描述

上面显示的灰色框列出了我们的变量。对于单元格 G1、G2 和 G3,依次单击每个单元格,然后单击以黄色突出显示的框来命名范围。输入相关范围名称:StartRow和。NumOfColsRangeIncHeaders

现在,您可以用使用变量的新公式替换原始公式:

=INDEX( $A$1:$B$4, ROUNDUP((ROW()-StartRow+1)/NumOfCols,0)+IF(RangeIncHeaders="Yes",1,0), MOD(ROW()-StartRow,NumOfCols)+1 )

在此处输入图片描述

现在让我们插入第三列。将公式中引用的范围更改为,以$A$1:$C$4了解有 3 列的事实。NumOfCols也设置为 3。

举个例子,我们将输出向下移动,使其从第 5 行而不是第 1 行开始。设置StartRow为 5。

在此处输入图片描述

最后,您可能希望能够打开或关闭行标题。如果是这样,只需设置RangeIncHeadersYes

在此处输入图片描述

答案4

A1 = a
B1 = b

我的理解是,在 D1 中,您需要一个输出为“ ab ”,即 A1,B1。然后您需要一个公式=A1&B1

相关内容