【问题标题】:Making a VBA FOR loop using vlookup function in Excel在 Excel 中使用 vlookup 函数制作 VBA FOR 循环
【发布时间】:2019-02-07 17:15:20
【问题描述】:

我想使用 Vlookup 函数 47 次来获取每个数据的值。我称我正在填写的表格为“表格 1”。 "表1从E3开始,我想用vlookup查找单元格E3的值,填入F3。

我将通过 Vlookup 返回值的表称为“Table2”。 "表 2 位于工作表 "CC 名称" 中,有两列 A 和 B。

我尝试了两个 FOR 循环。一个 FOR 循环,用于重复 47 次 Vlookup 函数。第二个 FOR 循环为 vlookup 函数“ccName”的名称使用该函数填充“表 1”中的值 43 次,但每次执行代码时都会出错。

Sub GLcreation()

For n = 3 To 50
For c = 3 To 50

ccName(c) = WorksheetFunction.Vlookup(Range("E" & n), Worksheets("CC Name").Range("A:B"), 2, 0)

Range("F" & n) = ccName(c)

Next c
Next n

End Sub

如果您能告诉我如何编写正确的 for 循环,感谢您的帮助。

【问题讨论】:

  • 摆脱c循环,只做Range("F" & n) = WorksheetFunction.Vlookup(Range("E" & n), Worksheets("CC Name").Range("A:B"), 2, 0)

标签: excel vba


【解决方案1】:

一旦出现不匹配,代码就会失败。在进行查找之前测试匹配更安全。这是一个更好的解决方案:

Sub GLcreation()

Dim n As Integer
Dim wf As WorksheetFunction
Set wf = WorksheetFunction

For n = 3 To 50
    If wf.CountIf(Worksheets("CC Name").Range("A:A"), Range("E" & n).Value) > 0 Then
        Range("F" & n).Value = wf.Index(Worksheets("CC Name").Range("B:B"), wf.Match(Range("E" & n).Value, Worksheets("CC Name").Range("A:A"), 0))
    End If
Next n

End Sub

【讨论】:

    【解决方案2】:

    去掉c Loop,正确的代码是:

    Range("F" & n) = WorksheetFunction.Vlookup(Range("E" & n), Worksheets("CC Name").Range("A:B"), 2, 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多