将一个单元格中的字符串放入我的索引匹配 VBa 脚本的中间
Posted
技术标签:
【中文标题】将一个单元格中的字符串放入我的索引匹配 VBa 脚本的中间【英文标题】:putting a string from a cell into the middle of my index-match VBa script 【发布时间】:2015-10-28 07:48:27 【问题描述】:我正在尝试使用索引匹配公式重新组织数据,以便将列 J 中与列 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
当我运行代码时,它给了我一个“应用程序定义或对象定义的错误”。
【问题讨论】:
【参考方案1】:您需要使用工作表的 Range 成员 所以使用 '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))"
【讨论】:
【参考方案2】:您的公式不包括 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 =
【讨论】:
以上是关于将一个单元格中的字符串放入我的索引匹配 VBa 脚本的中间的主要内容,如果未能解决你的问题,请参考以下文章