2015-06-08 2 views
1

Я застрял в этой строке кода в своем макросе в течение недели и читал и пробовал множество методов при решении этого вопроса.Двухколоночное совпадение с переменными VBA

Я должен заявить, что я не очень хорош с VBA, так что несите меня, и я буду благодарен за символическое объяснение некоторых шагов.

То, что я хочу сделать, довольно просто на самом деле, у меня есть большая база данных из 1000 строк в таблице, которые я хотел бы сделать совпадением для двух столбцов (с дубликатами) для того же номера строки, насколько это возможно , например:

колонка 1: Джеймс, Джон, Джон, Джеймс, Джеб

колонка # 2: Смит, Ли Смит, Wills, черный

Я хотел бы найти строку с «Джон» & «Смит», и простым ответом будет строка №3.

Но добавленное осложнение состоит в том, что цель сопоставления является переменной, например.

dim name1 as string 
dim name2 as string 
dim r as long 
name1 = "John" 
name2 = "Smith" 
r = application.worksheetfunction.match(name1&name2,.range("A:A")&.range("B:B"),0) 

Где эта функция должна повторяться через много итераций в макросе.

Я попытался, например, использовать для i = 1 до 1000 и индивидуально сопоставлять оба столбца через аргументы, но насколько я понимаю, я не мог получить номер строки из цикла, т. Е. R = result.row становится пустым вне цикла.

Благодарим вас за это! Этот форум внесла большой вклад в мой существующий код, и я невероятно благодарен за помощь до сих пор.

ответ

0

Сохранять значение 'r', возвращаемое Match() в массиве. Позже, используйте массив для дальнейших действий.

0

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

Шаг 1: В таблице, в колонке C, вставьте следующую формулу

=CONCATENATE(A1&B1) 

Скопируйте и вставьте вниз для всех ячеек А и В.

Шаг 2: Ваш VBA код выглядит хорошо. Однако вам нужно каким-то образом распечатать результат где-нибудь. Вы можете либо распечатать в окне сообщения

=msgbox(r) 

или к листу

например. Range("XX) = r

Надеемся, что сможем решить ваши вопросы.

Смежные вопросы