Excel宏代码问题:单元格含指定内容时填充值的逻辑修正
解决VBA单元格包含特定内容的匹配问题
嘿,这个问题很好解决!你当前的代码是精确匹配单元格内容完全等于"x",但你需要的是单元格包含"x"(比如"x a"这种情况)就触发赋值,咱们可以用两种常用方法修改代码:
方法1:使用Like操作符(带通配符)
Like是VBA里专门用来做模糊匹配的操作符,用*作为通配符表示“任意长度的任意字符”,这样就能匹配所有包含"x"的单元格:
Sub SSS() Dim lastrow As Long ' 先获取D列最后一行有数据的行号,避免遍历空行浪费资源 lastrow = Cells(Rows.Count, 4).End(xlUp).Row For i = 2 To lastrow ' *x* 表示单元格文本中任意位置包含"x" If Cells(i, 4).Text Like "*x*" Then Cells(i, 2) = "a" End If Next i End Sub
方法2:使用InStr函数
InStr函数会返回指定字符在文本中的起始位置,如果返回值大于0,就说明文本里包含这个字符:
Sub SSS() Dim lastrow As Long lastrow = Cells(Rows.Count, 4).End(xlUp).Row For i = 2 To lastrow ' 参数vbTextCompare表示不区分大小写,去掉则区分大小写 If InStr(1, Cells(i, 4).Text, "x", vbTextCompare) > 0 Then Cells(i, 2) = "a" End If Next i End Sub
另外补充一点:你原来的代码里lastrow没有定义和赋值,我在修改后的代码里加上了获取最后一行的逻辑,这样不会遍历整个工作表的空行,运行效率会更高~
内容的提问来源于stack exchange,提问作者Luke T
相关产品推荐
相关产品推荐

