Vlookup/Xlookup循环?来自另一个工作表的数据,然后粘贴为值

问题描述

不知道如何在 VBA 中编写代码

我在 ws2 上有一个名称列表,从单元格 A5 开始。此列表的大小将每天更改。我想从 ws1 上的数据中查找每个项目。然后想将数据作为值粘贴到 C 列的相应单元格中。

下图是 ws2 的样子。如果手动完成,这就是我会使用的 vlookup 公式。

enter image description here

如果您认为 xlookup 更好,也可以考虑它。查找数组将是 ws1 上的 A 列,返回数组将是 E 列。

希望代码尽可能简单,因为这是我的第一个 VBA 项目。任何评论/解释将不胜感激!

谢谢!

解决方法

标签名称

如果 'ws1' 和 'ws2' 是工作表的选项卡名称,则应该这样做,请注意,我已将公式中的 A:L 更改为 A:E,因为您没有查找 E 列之后的任何内容。

Sub Button1_Click()
Dim ws As Worksheet

    Set ws = Sheets("ws2")
 
    With ws.Range("C5:C" & ws.Range("A" & Rows.Count).End(xlUp).Row)
        .Formula = "=VLOOKUP(A5,ws1!A:E,5,0)"
        .Value = .Value
    End With

End Sub

变量名

如果 'ws1' 和 'ws2' 是引用工作表的变量名称,则使用它。

Dim ws1 As Worksheet
Dim ws2 As Worksheet

    Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")
 
    With ws2.Range("C5:C" & ws2.Range("A" & Rows.Count).End(xlUp).Row)
        .Formula = "=VLOOKUP(A5,'" & ws1.Name & "'!A:E,0)"
        .Value = .Value
    End With

End Sub

代号

最后,如果 ws1 和 ws2 实际上是工作表的代号,这应该可以工作。

Sub Button1_Click()

    With ws2.Range("C5:C" & ws2.Range("A" & Rows.Count).End(xlUp).Row)
        .Formula = "=VLOOKUP(A5,0)"
        .Value = .Value
    End With

End Sub