В настоящее время у меня есть два столбца, которые необходимо сравнить. Col A, Sheet 1 & amp; Col A, Лист 2.
Лист 1 содержит:
A B C
5000 Apples WI
6182 Oranges NY
7271 Grapes MN
2293 Peanuts FL
Лист 2 содержит:
A
4032
5233
7271
2293
Должны получить результаты, как ....
7271 Grapes MN
2293 Peanuts FL
Мне нужно только отображать результаты, которые содержат те же числа, что и лист 2. Есть ли лучший способ, чем загружать лист 2 в массив и сравнивать его с каждой ячейкой на листе 1?
'For i = 1 to Sheet1LastRow
Sheet2Row = Range("A" & Rows.Count).End(xlUp).Row
Sheet2Array = Range("A2:A" & Sheet2LastRow).Value
For i = LBound(Sheet2Array, 1) To UBound(Sheet2Array, 1)
'if cell = Sheet2Array(i, 1)
'....
'End if
Next i
'Next Cell sheet 1
microsoft-excel
vba
Brad
источник
источник
=VLOOKUP()
?Ответы:
Это основная функция
=VLOOKUP()
,Синтаксис:
На листе 2 в ячейке B1 вы должны разместить
=VLOOKUP(A1,Sheet1!A:B,2,False)
а в С1 вы бы поместили=VLOOKUP(A1,Sheet1!A:C,3,False)
Эта функция работает как между рабочими таблицами, так и между рабочими книгами (но вам нужно будет включить ссылки и помнить об изменениях в обеих рабочих книгах). VBA не требуется, это простая встроенная функция.
Продолжая это, вы, вероятно, получите
#N/A
ошибки для значений, которых нет в исходной таблице. Оберните формулу в=IFERROR( your vlookup() function , "" )
заменить любые ошибки на пустую ячейку.источник
Из ваших вопросов и примеров данных видно, что в качестве выходных данных вы ищете столбец с совпадающими данными в непрерывном блоке ячеек без пробелов или ошибок между ними.
Если вы хотите использовать формульный подход, то это может быть достигнуто с помощью слегка сложного INDEX & amp; Функции MATCH в формуле массива. Как только у вас есть совпадающие данные в смежных ячейках в столбце, просто примените VLOOKUP, чтобы извлечь остальные два столбца из вашей основной таблицы в Sheet1.
Вот как. Ниже приведены два скриншота Sheet1 & amp; Лист2.
Sheet1 содержит вашу основную таблицу в столбцах A, B & amp; C, Sheet2 имеет ваш список для сопоставления с колонкой A из Sheet1
Теперь в Листе 2 в ячейке С1 поместите следующую формулу массива
Поместите эту формулу без фигурных скобок и в панели формул нажмите CTRL + SHIFT + ENTER, чтобы создать формулу массива, и перетаскивайте ее вниз, пока не получите ошибку в ячейках или длине вашего списка для сопоставления. Теперь все строки выше ячеек с ошибками имеют совпадающие ячейки из столбца A Sheet1.
Просто очистите ячейки с ошибками, и вы получите список в непрерывном блоке ячеек.
Теперь в D1 введите относительно простую формулу VLOOKUP, чтобы получить следующий соответствующий столбец из Sheet1
А в Е1 положить формулу
и перетащите оба вниз. У вас есть список по желанию.
Вы можете использовать встроенную в Excel опцию Evaluate Formula, чтобы оценить комбинацию INDEX MATCH, чтобы понять, как это работает. Он создает массив совпадающих номеров строк и выбирает первое, затем второе, а затем третье наименьшее число при перетаскивании формулы.
Здесь есть два ограничения: данные должны быть возвращены в том порядке, в котором они существуют в главной таблице, а не в том, как они находятся в таблице «для сопоставления», и в случае, если у вас более 1 совпадающих ячеек, возвращается первая.
источник