| 
    
     |  | ▼しん さん: こんにちは。
 いくつか訂正もかねて全部掲載します。
 
 まず、
 
 >A02A02B12B13C22C22C23C2A02B13D345A02E99C2
 ↑こっちの文字列の方です。
 '============================================================
 Sub test()
 Dim co As Collection
 Dim ans() As String
 
 Call 文字列分解(Range("e1").Value, ans())
 Set co = mk_unique_collection(ans()) '重複なしの集合体の作成
 For idx = 1 To co.Count
 cnt = get_abs_count(ans(), co.Item(idx)) '個数の計算ではなく、数える
 Cells(idx, 1).Value = co.Item(idx)
 Cells(idx, 2).Value = cnt
 Next
 Set co = Nothing
 End Sub
 '====================================================================
 Sub 文字列分解(strng, a_array() As String)
 Dim regEx, Match, Matches  ' 変数を作成します。
 
 Set regEx = CreateObject("VBScript.RegExp")
 ' 正規表現を作成します。
 regEx.Pattern = "[A-Za-z][0-9]*"
 regEx.IgnoreCase = True ' 大文字と小文字を区別しないように設定します。
 regEx.Global = True  ' 文字列全体を検索するように設定します。
 Set Matches = regEx.Execute(strng)  ' 検索を実行します。
 idx = 1
 For Each Match In Matches  ' Matches コレクションに対して繰り返し処理を行います。
 ReDim Preserve a_array(1 To idx)
 a_array(idx) = Match.Value
 idx = idx + 1
 Next
 Set regEx = Nothing
 Set Match = Nothing
 Set Matches = Nothing
 End Sub
 '==============================================================
 Function mk_unique_collection(myarray() As String)
 Dim myclct As New Collection
 On Error Resume Next
 For idx = LBound(myarray()) To UBound(myarray())
 myclct.Add myarray(idx), myarray(idx)
 Next
 Set mk_unique_collection = myclct
 Set myclct = Nothing
 On Error GoTo 0
 End Function
 '===============================================================
 Function get_abs_count(myarray() As String, pat As String)
 get_abs_count = 0
 For idx = LBound(myarray) To UBound(myarray)
 If myarray(idx) = pat Then get_abs_count = get_abs_count + 1
 Next idx
 End Function
 
 ほとんど変更はありませんが、変数の型宣言をちゃんと記述しました。
 実は、そうしないと次のカンマ区切りの文字列を解析しようすると
 プロシジャーの共有ができない・・・、何のために分割してるか
 わからなくなってしまうので・・・・。
 
 次に
 >CCQM-K13,CCQM-K13,CCQM-K2,CCQM-K28,CCQM-K31,CCQM-K25,CCQM-K25,CCQM-K8,CCQM-K8,CCQM-K8,CCQM-K8,CCQM-K29,CCQM-K29,CCQM-K17,CCQM−K9
 のようなカンマ区切りの文字列のコードです。
 
 '====================================================================
 Sub test2()
 Dim co As Collection
 Dim ans() As String
 ans() = Split(Range("e1").Value, ",") 'これはVBAの関数
 Set co = mk_unique_collection(ans()) '重複なしの集合体の作成
 For idx = 1 To co.Count
 cnt = get_abs_count(ans(), co.Item(idx)) '個数の計算ではなく、数える
 Cells(idx, 1).Value = co.Item(idx)
 Cells(idx, 2).Value = cnt
 Next
 Set co = Nothing
 End Sub
 
 testと同様にセルE1に解析文字列を入れて実行してみて下さい。
 
 又、問題があったら教えて下さいね!!
 
 
 |  |