-1

没有运气弄清楚如何在 VBA 中对此进行编码。

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

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

在此处输入图像描述

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

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

谢谢!

4

1 回答 1

0

选项卡名称

如果 '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,5,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,'" & ws1.Name & "'!A:E,5,0)"
        .Value = .Value
    End With

End Sub
于 2021-04-06T18:25:43.897 回答