在excel vba中将两列数据合并为一列
正在寻找在Excel中将数据列合并为一列的解决方案。数据不是相邻的,因此我希望将A列中的数据与C列中的数据合并,将结果放入E列 例如:在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
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行是空的,为什么不开始在那里列出这些值?没有原因,我只是在编辑示例后从错误的位置开始。现在修改它。