2013-02-06 4 views
0

Я возникли проблемы с использованием ВПР в моем Excel 2010 VBAExcel 2010 VBA, зацикливания с ВПР

Я хочу перебрать каждую ячейку в столбце, пустой и посмотреть значение из соседнего столбца с данными источник. Я хочу сделать это в цикле. Я смотрел на многих форумах и могу заставить это работать правильно.

Heres образец моего кода

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 

ответ

1

Вот быстрый блок кода, который я написал, чтобы повторить то, что я думаю, что вы пытаетесь получить в.

Я создал некоторые данные образца. Поиск справа имеет цены на единицы, а слева у вас есть таблица с некоторыми записями, отсутствующими в столбце «общая цена».

Excel screenshot of sample data

ниже Блок коды петли через ячейку в столбце C и запускает ВПР каждый раз, когда он находит пустую ячейку.

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 

Запуск этого макроса должен дать вам это

Excel output

+0

Спасибо, я попробовал его, но мой диапазон данных смотрели снизу вверх на другом листе, и это, кажется, есть проблема с этим – schnarr