将一个单元格中的字符串放入我的索引匹配 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$2369J1 = $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 脚本的中间的主要内容,如果未能解决你的问题,请参考以下文章

从excel vba的列中的所有单元格中删除不需要的字符

如何使用 VBA 从单元格中获取一些字符

vba 判断一个单元格中是不是包含某个字符串 有则执行后面的语句

使用 VBA 更新和现有 OLEDB 连接

vba去掉单元格中的'

匹配函数内的Excel VBA索引