Excel VBA Vlookup с диапазонами - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть формула vlookup, которая принимает значение A2 и возвращает соответствующее совпадение, найденное в моей Lookup_Table в ячейке O2, этот поиск продолжается для строк внизу.

Как бы я изменил этот код для поиска диапазоназначений в A: M, а результаты помещены в O: AA?Или мне нужно вручную кодировать каждый столбец отдельно?

  With Sheets("Example")
    .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Formula = _
        "=IF(ISERROR(VLOOKUP(A2,'Lookup_Table'!A:H,4,FALSE)),0,VLOOKUP(A2,'Lookup_Table'!A:H,4,FALSE))"
           .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Value = _
        .Range("O2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Value 'Comment out if you'd like to leave the above formula in place
End With

screenshot

1 Ответ

0 голосов
/ 14 ноября 2018

Предполагая Lookup_Table = 'Lookup_Table'!A:H, вы можете попробовать что-то вроде:

With worksheets("Cross_Walk") ' Assumes Activeworkbook
    .Range("E2:H" & .Range("A" & .Rows.Count).End(xlUp).Row).Formula = _
        "=Iferror(VLOOKUP(A2,'Lookup_Table'!$A:$H,4,FALSE),0)"
    End With
  • Мы присваиваем формулу диапазону E2:H?, где ? - любое последнееопределяется как строка.

  • Excel присваивает относительные и абсолютные ссылки при назначении одной и той же формулы для диапазона ячеек.

  • Так как A2 в VLOOKUP имеет относительную ссылку на строку и столбец (без знаков $), он изменится на B2 при вводе формулы в F2 - и так далее для остальных столбцов и строк.

  • Кроме того, если вы собираетесь проверить, является ли результат VLOOKUP ошибкой, а затем условно присвоить либо ноль, либо совпадающее значение, вы также можете просто использовать IFERROR в своей формуле -вместо выполнения VLOOKUP дважды.

...