计算部分包含特定字符串的单元格数

时间:2015-06-02 01:14:44

标签: excel vba excel-vba

我想知道是否可以计算其中包含特定字符串的单元格?例如,我想使用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

3 个答案:

答案 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