【问题标题】:Matching the values from one colum to another if two other columns match如果其他两列匹配,则将一列中的值匹配到另一列
【发布时间】:2015-02-11 20:22:42
【问题描述】:

我有两个列表,一个在 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

【问题讨论】:

  • 能否包含您的 VLOOKUP 代码。
  • =vlookup(B1,$A$1:$BA$1577,2 false) 例如,我尝试过类似的东西,但没有任何效果,我对 EXCEL 不是很了解
  • 在 Col2 的单元格中试试这个 =VLOOKUP(A:A,C:D,2,0)(我假设 Col1 是 A 等)
  • @AStidham =vlookup(B1,$A$1:$BA$1577,2 false) 例如,我尝试过类似的东西,但没有任何效果,我对 EXCEL 不是很了解
  • @LeftVertical 你能用下面的答案吗?

标签: excel excel-2010 vba


【解决方案1】:

如果有人想为此使用代码,这里有一些简短的代码来完成 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 列和第 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 列和第 4 列的引用。

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多