我想知道是否可以计算其中包含特定字符串的单元格?例如,我想使用Mid(C.Value, 6, 2) = "sh"
并计算我的电子表格中有多少数据" sh"在它。
到目前为止,我使用UsedRange来选择电子表格中的所有数据,如果过滤并计算其中包含特定字符串的特定数据,我需要做的所有事情。
Sheets("Campaign").UsedRange 'Refresh UsedRange
LastRow = Sheets("Campaign").UsedRange.Rows.Count
Dim RangeString As String
Worksheets("Campaign").Select
Range("A1:A" & LastRow).Select
RangeString = Selection.Address
Range("A1").End(xlToRight).Select
RangeString = RangeString & ":" & Selection.Address
答案 0 :(得分:3)
可以这样做。首先,为什么你要使用这么多选择,我宁愿使用For循环。无论如何,你可以像这样使用它:
Dim i As Integer
Dim count as Integer
count=0
For i = 1 To 6
if(Instr(Cells(i,1).Text,"sh")) Then
count=count+1
End if
Next i
很抱歉,由于我使用的是Ubuntu,我无法测试代码,但我希望你明白这一点。
答案 1 :(得分:3)
如果你想查看 sh 是否在单元格值的任何位置,
dim cnt as long
with Sheets("Campaign").UsedRange
cnt = application.countif(.cells, "*sh*")
debug.Print cnt
end with
如果你想将 sh 的单元格计算为任何单元格值中的第六个和第七个字母,那么
dim cnt as long
with Sheets("Campaign").UsedRange
cnt = application.countif(.cells, "?????sh*")
debug.Print cnt
end with
作为通配符,星号(例如*
)表示任意数量的字符。问号(例如?
)表示单个字符,但可以叠加。
这些计数不区分大小写。
答案 2 :(得分:3)
我身边的其他变体已经由@Jeeped
Sub test()
Dim cl As Range, i&: i = 0
For Each cl In Sheets("Campaign").UsedRange
If LCase(cl.Value) Like "*sh*" Then i = i + 1
Next cl
MsgBox i
End Sub