我正在尝试创建一个函数,如果一行中有一个单词“Market”,则会在每一行的第11列中输入“Yes”。但我得到错误不匹配。
Option Explicit
Sub findMarketing()
Dim r As Range
For Each rw In Worksheets("Sheet1").Rows
Set r = rw.Range("A:G")
If r.Find(What:="market") Then
rw.Columns(11).Value = "Yes"
Else
rw.Columns(11).Value = "No"
End If
Next rw
End Sub
答案 0 :(得分:1)
您可以从评论中得到答案(感谢Ron Rosenfeld),但您也不想通过1,048,576行。使用Intersect函数对任何特定行上的A:G列进行操作,并将行限制为工作表的.UsedRange,这样您只需检查实际包含数据的行。
我已经更改了在A:G列中找到'市场'的方法,因为您没有指定足够的参数。 .Find函数很大程度上依赖于最后使用的内容。如果用户在工作表上使用了“查找”或“替换”并更改了“匹配大小写”,“匹配整个内容”等,那么这就是您要在其下运行的内容。我假设您需要一个不区分大小写的完整单元格值匹配。 [edit]显然需要使用通配符部分匹配。
Option Explicit
Sub findMarketing()
Dim r As Range, rw As Range
With Worksheets("Sheet1")
For Each rw In .UsedRange.Rows
Set r = Intersect(rw, .Range("A:G"))
If IsError(Application.Match("*market*", r.Cells, 0)) Then
.Cells(rw.Row, "K") = "No"
Else
.Cells(rw.Row, "K") = "Yes"
End If
Next rw
End With
End Sub