- 締切済み
EXCEL VBA 重複する値のカウント
A列2行目列タイトルで「州名」 A列3行目よりデータがはいっています (A列データ数は数千~1万件くらい) A 1 2 州名 3 アラバマ 4 あらばま 5 NEWYORK 6 California 7 ニューヨーク 下記の様に同シートD列に重複を除いた州名、E列に重複数を表したいのですが (ひらがなとカタカナ、大文字と小文字、半角と全角の区別はせずに先にでた文字でまとめる) 早い処理の方法があれば教えていただけないでしょうか? 何卒、よろしくお願いいたします。 D E アラバマ 2 NEWYORK 2 California 1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- wikikuso
- ベストアンサー率28% (6/21)
「NEWYORK」と「ニューヨーク」の判断は、別途に定義テーブルが必要ですが、 「アラバマ」と「あらばま」であれば、「strConv」関数を利用すれば、同一とみなすロジックが組めそうですね。 「strConv」で全角・半角の統一、ひらがなカタカナの統一処理を行うというのはどうでしょうか。
- mu2011
- ベストアンサー率38% (1910/4994)
VBAに関しては質問の丸投げしても後々の改定に対応ができないと思いますので 一案を回答しますのでVBAによる手続きはご質問者様にてお願いします。 不明点や疑問点がでたらweb検索すれば大概は解決できます。 >ひらがなとカタカナ、大文字と小文字、半角と全角の区別はせずに先にでた文字でまとめる ⇒名称は区別しないといけないので入力文字列パターン表を定義する >先にでた文字でまとめる ⇒入力順に拘る必要性を感じないので予め50州を固定文字列で決めておき、これを 前述の文字列パターン表に組み込む (1)1行に州名の入力文字列パターンと固定文字の重複表を別シートに設定する (2)元データ表A列の文字列で別シートを検索(Find関数等)して固定文字を取得 Find関数ならば全半角、大文字・小文字を吸収できるので入力文字パターン 省略できる (3)固定文字列をキーに連想配列等を利用して出現回数を計数する (4)固定文字列の州名表に従い、連想配列から計数データを抽出する