| 
    
     |  | ▼fool さん: ▼もも さん:
 
 こんにちは、横から失礼します。
 ももさんの案では以下の並びのときに問題が出そうです。
 A    B
 1    1
 2    0
 3    1
 4    0
 5    1
 6    0
 7    1
 8    0
 9    1
 やはりしらみつぶしに調べるしか方法はないのではないでしょうか。
 Sub test2()
 Const myStr As String = "101" '探す文字
 Dim AA As Variant
 Dim tmpStr As String
 Dim lastR As Long, i As Long, C As Long
 
 lastR = Range("B" & Rows.Count).End(xlUp).Row
 AA = Range("B1:B" & lastR).Value
 C = 0
 For i = 1 To lastR + 1 - 3 '(3文字の場合)
 tmpStr = AA(i, 1) & AA(i + 1, 1) & AA(i + 2, 1)
 If tmpStr = myStr Then C = C + 1
 Next i
 MsgBox myStr & "は" & C & "個です"
 End Sub
 ただしこれ考えられる全パターンとなると2^(n+1)-2個あり
 計算量的にきついことになるのではないでしょうか?
 
 >こんにちは
 >
 >こんな感じでどうですか?
 >
 >Sub test()
 >Const myStr As String = "101" '探す文字
 >Dim myCount As Long
 >myCount = UBound(Split(Join(Application.Transpose(Range("B1", Range("B1").End(xlDown)).Value), ""), myStr))
 >MsgBox myStr & "は" & myCount & "個です"
 >End Sub
 
 |  |