我有两个列表,其中一个在excel中有其他值,如此,Col2为空
Col1 Col2 Col3 Col4
xyz xxx 111
xxx xzy 312
xzy xyz 523
... ... ...
我想检查Col1和Col3是否匹配,如果Col1和Col3分别匹配Col2上的匹配行,或者至少对齐那些匹配而不弄乱Col3和Col之间的关系,则检查从Col4到Col2的值。
所以我的结果应该是这样的:
Col1 Col2 Col3 Col4
xyz 523 xxx 111
xxx 111 xzy 312
xzy 312 xyz 523
... ... ... ...
或者我们可以忽略Col2并将其对齐就像这样
Col1 Col2 Col3 Col4
xyz xyz 523
xxx xxx 111
xzy xzy 312
... ... ...
我已经尝试过一些像VLOOKUP这样的东西,但是却失败了。
解决!解决了类似的问题here
答案 0 :(得分:0)
如果有人想为此使用代码,这里有一些简短的代码来完成OP寻找的两个最终结果选项:
选项1 - 在第2列中放置匹配值
Sub Test()
Dim LastRow As Long
Dim i As Long, j As Long
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
For i = 1 To LastRow
For j = 1 To LastRow
If .Cells(j, 3).Value = .Cells(i, 1).Value Then .Cells(i, 2).Value = .Cells(j, 4).Value
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub
选项2 - 重新排列第3列和第3列4
Sub Test2()
Dim LastRow As Long
Dim i As Long, j As Long
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
For i = 1 To LastRow
For j = 1 To LastRow
If .Cells(j, 3).Value = .Cells(i, 1).Value And j <> i Then
.Range(.Cells(j, 3), .Cells(j, 4)).Cut
.Range(.Cells(i, 3), .Cells(i, 4)).Insert
Exit For
End If
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub
请注意,如果删除第2列,则需要更改对第3列和第3列的引用。 4这个。