把一个单元格的string放到我的索引匹配VBa脚本的中间

我正在尝试使用索引匹配公式重新组织数据,以便列J中具有匹配值的所有名称将被放置在相同的位置。 我要为5个不同的列做这个,这样一个团队中的5个名字将和相应客户端的名字在同一行。

我的问题是,索引匹配公式需要能够dynamic地缩短或延长它使用的数组的大小,这取决于运行VBA脚本时有多less个客户端。

我可以使用COUNTAdynamic地确定在公式中需要的数字,但是当我尝试将其放入公式时,代码将不会编译。 我的公式如下

 Range("B7").Select ActiveCell.Formula = "=INDEX('test sheet two'!" & Range("J3") & ",MATCH(Sheet1!A5,'test sheet two'!" & Range("J1") & ",0)" 

正如你所看到的,我需要单元格J3和J1中的string作为索引匹配的数组。 J3 = $J$2:$J$2369J1 = $A$2:$A$1113

当我运行代码时,它给了我一个“应用程序定义或对象定义的错误”。

您需要使用工作表的范围成员,所以使用'test sheet two'!Range(“J2:J2369”)而不是'test sheet two'!(“J2:J2369”)。

以下运行

 ActiveCell.Formula = _ "=INDEX('test sheet two'!Range(""" & Range("J3") & """) _ ,MATCH(Sheet1!A5,'test sheet two'!Range(""" & Range("J1") & """),0))" 

您的公式不包括INDEX函数的列标准。

尝试:

 Range("B7").Select ActiveCell.Formula = "=INDEX('test sheet two'!" & Range("J3") & "," & _ "MATCH(Sheet1!A5,'test sheet two'!" & Range("J1") & ",0), 1)" 

注意额外的, 1)"在公式的末尾。

另外,你不必先Select你想要input公式的单元格,你可以使用:

 Range("B7").Formula =