Excel VBA与特定列中的所有单元格匹配

时间:2018-05-09 23:05:31

标签: excel vba excel-vba match matching

此表是通过将多个工作簿中的可变数量的列拉为一个来完成的。我跟踪“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   |
+-------------+-----------+-------------+-----------+-----------+--------+-------------+-----------+-------+

我正在检查是否

特定行中的某个键1与一个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 :(得分:1)

如果您可以根据数据创建表格(ListObject),那么您的MATCH列公式将为=IF(AND(ISNA(MATCH([Key1],[Key2],0)),ISNA(MATCH([Key2],[Key1],0))),"","Yes")

这会根据标题引用Key1Key2列,从而消除数字和/或列顺序更改的问题。