将单元格中的字符串放入索引匹配VBa脚本的中间

时间:2015-08-05 13:35:44

标签: excel vba excel-vba indexing match

我正在尝试使用索引匹配公式来重新组织数据,以使列A中具有匹配值的所有名称都放在同一位置。我将为5个不同的列执行此操作,以便团队中的5个名称与相应客户端的名称位于同一行中。

我的问题是索引匹配公式需要能够根据运行VBA脚本时有多少客户端动态缩短或延长它使用的数组的大小。

我可以使用COUNTA动态确定公式中需要的数字,但是当我尝试将其放入公式时,代码将无法编译。我的公式如下

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

如您所见,我需要将单元格J3和J1中的字符串用作索引匹配的数组。 J3 = $J$2:$J$2369J1 = $A$2:$A$1113

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

2 个答案:

答案 0 :(得分:0)

您需要使用工作表的范围成员 因此,请使用“测试表2”!范围(" J2:J2369")而不是“测试表2”!(" J2:J2369" )。

以下运行

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

答案 1 :(得分: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要输入公式的单元格,您可以使用:

Range("B7").Formula =