我正在尝试使用索引匹配公式来重新组织数据,以使列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$2369
和J1 = $A$2:$A$1113
当我运行代码时,它会给我一个"应用程序定义或对象定义的错误。"
答案 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 =