- 締切済み
TextStream内の特定単語数を数えるには
宜しくお願いします。 縦方向に展開されているテキスト(データ)をExcel上でまとめようとしています。 FSOで取得したテキストデータを .ReadAll で全て1つの変数に入れて InStr(buf, "住所") として、そのテキスト内に出てきた「住所」の数を数えようとしています。 しかし数えたい数が「1」としか出て来ません。 自分なりに調べてはいるのですが解決策が見当たらず悩んでいます。 具体的なソースでなくとも、参考URLでも結構ですのでお教え頂ければ幸いです。 --TextData.txt (下記のセットが繰り返される)-- 住所: 東京 郵便: 100-2000 コメント: 文章xxxxxx xxxxx メールアドレス: username@example.com ---- --まとめたいExcelの形--- ---|A---|-B-- |-C-- |-D-- -1-|住所|郵便 |コメント |メールアドレス | -2-|東京|100-2000|文章xxxxxx xxxxx|username@example.com| -3-|大阪|540-3000|文章xxxxxx xxxxx|username2@example.com| ---------
- みんなの回答 (1)
- 専門家の回答
みんなの回答
一番簡単なのは、Split関数を使って "住所" を区切り 文字にして文字列を分割してしまうことです。 Split 関数から返される配列の数から、1を引いたのが "住所" の個数になるでしょう。 Split関数(EXCEL) http://officetanaka.net/excel/vba/tips/tips62.htm Split関数(VBScript) http://msdn.microsoft.com/ja-jp/library/cc410311.aspx ところで、質問のデータの形式から気になる点があるのですが、 コメントに "住所" という文字列は存在しないのでしょうか? 例えば『○月○日に住所が変わりました』とか。 もし、そのような文言があった場合、単純にデータの境目を "住所" という文字にすると、おかしな動きになりますよね? ※この手の質問は対象言語を質問タイトルに入れて おいたほうが、回答が付きやすいですよ。 EXCEL VBA とか VBScript とか。
補足
ご回答頂き有難うございます。返信遅くなり失礼しました。 まだ試しておりませんが、ご提言のやり方で1度やってみたいと思います。 >コメントに "住所" という文字列は存在しないのでしょうか? 存在しない、という性善説の考え方です。実際のテキストデータには見当たらないから、というのが理由でもあります。確かに例外処理を入れるべきとは考えますが、そこまで手が回らないというのも理由にあります。 >※この手の質問は対象言語を質問タイトルに入れて ご助言ありがとうございます。仰る通りですね。 愚痴になりますが投稿時の件名の文字数制限をもうちょっと緩和して欲しいものです^^;