两列匹配VBAvariables

我一直坚持在我的macros的这一行代码现在一个星期,阅读和尝试了很多方法来解决这个问题。

我必须声明,我对VBA不是很好,所以请耐心等待,我会欣赏一些步骤的标记性解释。

我想要做的事情其实很简单,我在表格中有一个大约1000行的大型数据库,我希望尽可能有效地为相同行号的两列(重复)进行匹配,例如:

专栏1:詹姆斯,约翰,约翰,詹姆斯,杰布

专栏#2:史密斯,李,史密斯,威尔斯,黑色

我想find与“约翰”和“史密斯”行,简单的答案是第3行。

但增加的复杂性是匹配目标是一个variables,例如

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) 

这个函数必须在macros中迭代多次。

我试过例如使用for i = 1到1000,并通过if参数单独匹配两列,但据我所知我无法得到循环的行号,即r = result.row变成在循环之外清空。

非常感谢您阅读这个! 这个论坛对我现有的代码贡献了很多,我非常感谢迄今为止的帮助。

在数组中保持Match()返回的'r'的值。 稍后,使用该数组进一步操作。

我不得不在本周早些时候做类似的事情,虽然这个问题看起来令人望而生畏,但通过阅读这里和其他地方的post给出了一个相当简单但容易的解决scheme。

步骤1:在电子表格的C列中插入以下公式

 =CONCATENATE(A1&B1) 

复制并粘贴到A和B中的所有单元格。

第2步:您的VBA代码看起来不错。 但是,您需要某种方法将结果打印到某处。 您可以打印到消息框

 =msgbox(r) 

或表单

例如。 Range("XX) = r

这些应该有希望解决你的问题。