|
▼しん さん:
おはようございます。
今朝は大変感激してあらゆるデータ例を試してみなかったので気付かなかったのですが、もし題意の文字列が
>
>A02A02B12B13C22C22C23C2A02B13D345A02E99C2
>
>のような場合には、解答が
>
>A02 4
>B12 1
>B13 2
>C22 2
>C23 1
>C2 5
>D345 1
>E99 1
うっ、本当ですね!!
気がつきませんでした・・・。
いくつか試しましたが、結局数えるにことにしました。
以下のように変更・追加して下さい。
'==============================================================
Sub test()
Dim co As Collection
Dim ans()
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
'↓追加
'=====================================================================
Function get_abs_count(myarray(), pat)
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
>
>のようなカンマで区切られた文字列群の集合体であった場合の文字列分解コードはどのようになるのでしょうか?たびたびの質問で申し訳けありませんが、ぜひお教え頂ければ幸いです。
区切りがはっきりしている分、こっちのほうが分解自体は簡単そうですが・・。
ところで、↑のパターン文字列と前回のパターンと同じプロシジャーで
解析したいと言う事ですか?
そうなると大きく変更しなければなりませんが、
別々の解析プロシジャーだと思ってよろしいですか?
どっちにしても本日、一日、外回りなので、投稿は、夜になってしまいます。
|
|