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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba 判断一个单元格中是不是包含某个字符串 有则执行后面的语句相关的知识,希望对你有一定的参考价值。

参考技术A 用instr函数判断是否包含指定字符,>0表示"含有"
SearchString
=
"XXpXXpXXPXXP"
被搜索的字符串
SearchChar
=
"P"
要查找字符串
"P"
MyPos
=
InStr(SearchString,
SearchChar)
返回9
MyPos
=
InStr(1,
SearchString,
"W")
返回
0

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

【中文标题】将一个单元格中的字符串放入我的索引匹配 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判断单元格是不是包含某字符

excel中判断某个单元格中的文本字符串是不是包含某个文本的excel函数是啥?

vba怎样把一个单元格中的值赋给另一个单元格

Excel,VBA中,如何判断变量是不是包含特定字符串

VBA,如何判断单元格中公式的结果是不是是星期天或星期六呢?

vba中怎么遍历单元格中所有字符串