Excel VBA Сопоставление со всеми ячейками в определенном столбце - PullRequest
0 голосов
/ 10 мая 2018

Эта таблица составлена ​​путем вытягивания переменного числа столбцов из нескольких рабочих книг в одну. Я отслеживаю индекс столбца для «Key1» и «Key2» с целыми числами «i1» и «i2» соответственно.

+-------------+-----------+-------------+-----------+-----------+--------+-------------+-----------+-------+
|  Thisjust   | Indexcode | Specialcode |   Key1    | Indexcode |  Some  | Specialcode |   Key2    | MATCH |
+-------------+-----------+-------------+-----------+-----------+--------+-------------+-----------+-------+
| isanexample |       101 |       27223 | 101_27223 |       101 | Values |        1112 | 101_1112  |       |
| isanexample |       102 |       27224 | 102_27224 |       102 | Values |        1113 | 102_1113  |       |
| isanexample |       103 |       27225 | 103_27225 |       103 | Values |        1114 | 103_1114  |       |
| isanexample |       104 |       27226 | 104_27226 |       104 | Values |        1115 | 104_1115  |       |
| isanexample |       108 |       11130 | 108_11130 |       105 | Values |        1116 | 105_1116  | Yes   |
| isanexample |       106 |       27228 | 106_27228 |       106 | Values |        1117 | 106_1117  |       |
| isanexample |       107 |       27229 | 107_27229 |       107 | Values |        1118 | 107_1118  |       |
| isanexample |       110 |       27227 | 110_27227 |       108 | Values |       11130 | 108_11130 | Yes   |
| isanexample |       109 |       37345 | 109_37345 |       109 | Values |        1112 | 109_1112  |       |
| isanexample |       105 |       37346 | 105_37346 |       110 | Values |        1113 | 110_1113  |       |
| isanexample |       111 |       37347 | 111_37347 |       111 | Values |        1114 | 111_1114  |       |
| isanexample |       112 |       37348 | 112_37348 |       112 | Values |        1115 | 112_1115  |       |
| isanexample |       113 |       37349 | 113_37349 |       113 | Values |        1116 | 113_1116  |       |
| isanexample |       114 |       37350 | 114_37350 |       114 | Values |        1117 | 114_1117  |       |
| isanexample |       115 |       37351 | 115_37351 |       115 | Values |        1118 | 115_1118  |       |
| isanexample |       116 |       11138 | 116_11138 |       116 | Values |       11138 | 116_11138 | Yes   |
| isanexample |       117 |       11139 | 117_11139 |       117 | Values |       11139 | 117_11139 | Yes   |
| isanexample |       118 |       11140 | 118_11140 |       118 | Values |       11140 | 118_11140 | Yes   |
+-------------+-----------+-------------+-----------+-----------+--------+-------------+-----------+-------+

Я проверяю, если

ЛИБО key1 в определенной строке соответствует одной из ячеек key2

ИЛИ, если key2 в определенной строке соответствует одной из ячеек key1

Я использовал эту формулу для достижения этой цели

=IF(AND(ISNA(MATCH(H2,$D$2:$D$19,0)),ISNA(MATCH(D2,$H$2:$H$19,0))),"","Yes")

Знание о том, что вся эта таблица может иметь разное количество столбцов, а порядок столбцов также является переменным:

Как мне выполнить функцию сопоставления в VBA? Столбец MATCH всегда будет в конце.

1 Ответ

0 голосов
/ 10 мая 2018

Если у вас все в порядке с созданием таблицы (ListObject) из ваших данных, ваша формула столбца MATCH будет =IF(AND(ISNA(MATCH([Key1],[Key2],0)),ISNA(MATCH([Key2],[Key1],0))),"","Yes").

Ссылка на столбцы Key1 и Key2 основана на их заголовках, что устраняет проблему изменения числа и / или порядка столбцов.

...