【问题标题】:Excel 2010 VBA , looping with vlookupExcel 2010 VBA,使用 vlookup 循环
【发布时间】:2013-02-07 02:33:39
【问题描述】:

我在 Excel 2010 VBA 中使用 vlookup 时遇到问题

我想遍历空白列中的每个单元格,并从数据源的相邻列中查找值。我想循环执行此操作。我查看了许多论坛,并且可以使其正常工作。

这是我的代码示例

Sheets("NPT(hrs)").Activate
Dim NumberRows As Integer
NumberRows = Range("a:a").Find("*", Range("A1"), SearchDirection:=xlPrevious).Row
NumberRows = NumberRows

ActiveCell.Offset(2, 69).Activate
For RowNum = 1 To NumberRows
    If Len(Range("BQ1").Offset(RowNum, 0)) = 0 Then

        ActiveCell.Value = Application.WorksheetFunction.VLookup(Cells(RowNum, 68), "Equipment!A:K", 7, False)

        ActiveCell.Offset(1, 0).Activate
    '' This approach never workedXXX
    'v = WorksheetFunction.VLookup(Cells(RowNum, 68), "Equipment!A:K", 7, False)
           ' ActiveSheet.Cells(RowNum , 69).Formula = "=VLOOKUP(Cells(RowNum,68) ,Equipment!A:K,7,false)"
    'ActiveCell.Text = "v"


    'MsgBox "fin work?"
End If

【问题讨论】:

    标签: vba vlookup


    【解决方案1】:

    这是我编写的一个快速代码块,用于复制我认为您想要了解的内容。

    我创建了一些示例数据。右侧的查找有单价,左侧有一个表格,其中“总价”列中缺少一些条目。

    下面的代码块循环遍历 C 列中的单元格,并在每次找到空白单元格时运行一次 vlookup。

    Sub FillInBlanks()
    
      Dim rng As Range
      Set rng = ActiveSheet.Range("C2:C21")
    
      For Each cell In rng
        If IsEmpty(cell) Then
            cell.FormulaR1C1 = "=VLOOKUP(RC[-2],R1C7:R11C8,2,FALSE)*RC[-1]"
        End If
      Next cell
    
    End Sub
    

    运行这个宏应该会给你这个

    【讨论】:

    • 谢谢,我试过了,但我要查找的数据范围在另一张纸上,这似乎有问题
    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多