|
▼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
|
|