使用VBA为列A中具有数据的所有行填充VLOOKUP公式

时间:2018-12-09 05:03:08

标签: excel vba excel-vba

我有一个包含个人得分的数据集,但是该报告缺少团队经理的分配。我有一个单独的表,其中包含团队经理的工作分配。棘手的是,人们会更换经理,我必须将分数与经理联系在一起,然后只有新数据才能转移到新经理。

我的想法是我有一个查询标签,可将数据粘贴到其中。有一个列始终为每条记录显示“项目”,并且不用于我的目的。因此,我想如果我在If语句中创建一个运行VLOOKUP的控件按钮以拉动团队经理的任务,则如果记录中指定列中包含“ Item”,则VLOOKUP运行并将工作“ Item”替换为经理姓名。这样,如果有人更换经理,它将保留与特定经理相关的分数。

问题:宏似乎正确地在第一行运行,但是,它只是在整个表中重复显示相同的经理名称,并说“项目”。如何使它提取每一行的VLOOKUP数据并填充正确的团队经理。

代码:

Sub AssignTeams()
    If Sheets("CallScrubQuery").Range("G2") = "Item" Then
        Range("G2:G" & Range("A" & Rows.Count).End(xlUp).Row).Formula = Application.WorksheetFunction.VLookup(Sheets("CallScrubQuery").Range("A2"), Sheets("TeamAssignment").Range("$A$2:$B$200"), 2, False)
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

如果您始终查找A2中的值,为什么还要期望结果有所不同?

您可以只在第一个单元格中输入公式,然后使用另一个VBA语句向下复制公式。向下复制时,“ A2”将调整为当前行。

或编写将“ A2”更改为引用当前行的代码。

第一种方法可能更容易。提示:使用宏记录器可以帮助您弄清楚语法。