在excel vba中将两列数据合并为一列

在excel vba中将两列数据合并为一列,excel,vba,Excel,Vba,正在寻找在Excel中将数据列合并为一列的解决方案。数据不是相邻的,因此我希望将A列中的数据与C列中的数据合并,将结果放入E列 例如: Row A B C D E (Desired result) 1 1 2 1 2 2 3 3

正在寻找在Excel中将数据列合并为一列的解决方案。数据不是相邻的,因此我希望将A列中的数据与C列中的数据合并,将结果放入E列

例如:

Row       A        B        C        D        E (Desired result)
1                                             1
2         1                 2                 2
3         3                 4                 3
4         5                 6                 4
5         1                 2                 5
6                                             6
7         7                 8                 7
8                                             8
数据按行的第一次出现顺序排列是很重要的。顺便说一句,避免重复也很好(参见示例列E中未重复的第二个1和2),但这很容易在后面处理

我还需要它来忽略空白单元格


希望通过VBA实现这一点。

循环遍历A列和C列中的所有单元格,如果它们在E列中不存在,请按顺序列出它们:

Sub Test()

With ActiveSheet
    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1).Value <> "" Then
            If WorksheetFunction.CountIf(.Range("E:E"), Cells(i, 1).Value) = 0 Then
                Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Cells(i, 1).Value
            End If
        End If

        If Cells(i, 3).Value <> "" Then
            If WorksheetFunction.CountIf(.Range("E:E"), Cells(i, 3).Value) = 0 Then
                Cells(.Cells(.Rows.Count, 5).End(xlUp).Row + 1, 5).Value = Cells(i, 3).Value
            End If
        End If
    Next i
End With

End Sub
子测试()
使用ActiveSheet
对于i=1到.Cells(.Rows.Count,1).End(xlUp).Row
如果单元格(i,1)。值为“”,则
如果工作表function.CountIf(.Range(“E:E”),单元格(i,1).Value)=0,则
单元格(.Cells(.Rows.Count,5)。结束(xlUp)。行+1,5。值=单元格(i,1)。值
如果结束
如果结束
如果单元格(i,3).的值为“”,则
如果工作表function.CountIf(.Range(“E:E”),单元格(i,3).Value)=0,则
单元格(.Cells(.Rows.Count,5)。结束(xlUp)。行+1,5。值=单元格(i,3)。值
如果结束
如果结束
接下来我
以
端接头

请您解释一下,为什么您希望的结果是从第2行开始,而不是从第1行开始,将每一行相加?这是因为直到第二行为止,没有任何值被添加到值的“数组”中吗?它不是。它按如下顺序输入单元格的值:A2、C2、A3、C3、A4、C4、A5、C5、A7、C7…@AndrewAbbott为什么E列的第1行是空的,为什么不开始在那里列出这些值?没有原因,我只是在编辑示例后从错误的位置开始。现在修改它。