假设我有两个单独的列/数组。
A列有100行,每行包含20个长度的字符串
A(1)= daskjdkjasdj
A(2)= asdsadgggggg
A(3)= dsadpoeeeeee
列B是具有200行的列,其中某些行具有与上述相同的值,我想添加唯一的一行。 我只想添加不属于A列的新标识符。 (我忘了提到,对于具有标识符的每一行,还有另外20列也应添加数据。我很抱歉)
我想从数据B向数据A添加行,其中标识符不在数据A中。 结果我会得到
我只是简单地这样做:
for i = 1 to lastrow_column_b
g=0
for j=1 to ubound(column_a)
if column_a(j)=cells(i) then g=1
goto skip
next
skip:
if g = 0 then "do something, add to column_a"
next
但是我相信有更有效的方法
答案 0 :(得分:0)
以下代码将使您走上正确的道路。第一个循环将列A中的所有条目添加到数组中。第二个循环仅从C列添加新条目。输出粘贴到E列。您应该能够更改引用以适合您的需求。希望能帮助您完成任务。
Sub UpdateColumn()
Dim objDict As Object
Dim key As Variant,
' Create new collection
Set objDict = CreateObject("System.Collections.ArrayList")
With ThisWorkbook.ActiveSheet
With .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
' Read data of column A into array
' Does not check for duplicates
For Each key In .Value
objDict.Add key
Next
End With
With .Range("C2", .Range("C" & .Rows.Count).End(xlUp))
' Read data of column B into array, add new entries only
For Each key In .Value
If Not objDict.Contains(key) Then objDict.Add key
Next
End With
.Range("E2").Resize(objDict.Count) = Application.Transpose(objDict.toarray())
End With
End Sub