人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの質問です。地名をローマ字に変換したいです。

前回の質問へのご回答 http://q.hatena.ne.jp/1479040277 で、市区町村を取得することが出来ました。そこからそれを、ローマ字に変えたいのですが。

Variable name creation | 漢字をローマ字・英語に変換します。変数名を作成するためのツールです。
http://hensumei.com/kanji-romaji

ですと、文字1つずつしか変換することが出来ません。
馴染み深いのでExcelで、一度に大量のデータをローマ字に変換できたらいいなと思っています。特にExcelにこだわっているわけではありませんが。

何らかの方法で多数の地名データをローマ字に変換できる方法をご教授いただけると助かります。
よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD
●50ポイント

http://yanok.net/dist/romaji-chimei-csv/
http://www.post.japanpost.jp/zipcode/dl/readme_ro.html
この辺から変換テーブル作ってvlookupで引っ張ってくる、というのはどうでしょうか。
ただ、「ヶ」「ケ」だとか政令指定都市の区名の扱いとか、あと長音や促音、撥音の扱いとかの問題はあるかもしれません。
あと、データ量がデータ量なので、自動再計算は切って、変換後に「値で貼り付け」で固定化した方が良いかもしれません。


moon-fonduさんのコメント
TransFreeBSDさん、コメントありがとうございます。それもありかもしれませんね。 romaji-chimei-all-uファイル開きました。D列とE列にローマ字表記が書いてくれてますね。 もしA列の地名に一致すれば、その3列隣のD列の値を引用する、って感じですね。

2 ● a-kuma3
●2000ポイント ベストアンサー

住所の郵便番号(ローマ字・zip形式)のデータを使って、表引きでやってみました。
以下の手順でやってみてください。

  1. 住所の郵便番号(ローマ字・zip形式)から ken_rome_all.zip をダウンロードします
  2. KEN_ALL_ROME.CSV を Excel で開いて、シートの「移動またはコピー」で目的の Book に "KEN_ALL_ROME" シートを移動する
    移動先の位置はどこでも構いません。シートの名前が KEN_ALL_ROME になっているはずです。
  3. 以下のコードを目的の Book の標準モジュールに貼り付けて、to_roman_by_list サブルーチンを実行してください
Sub to_roman_by_list()
 source_col = 1  ' A列 : 市区町村
 dest_col = 2  ' C列 : ローマ字

 key_col = 3  ' C列 : 漢字
 val_col = 6  ' F列 : ローマ字

  ' ローマ字読みを引き当てる辞書を作成する
 Set ps = Sheets("KEN_ALL_ROME")
 Set roman_map = CreateObject("Scripting.Dictionary")

 last_row = ps.Cells(Rows.Count, key_col).End(xlUp).Row
 For r = 1 To last_row
 k = ps.Cells(r, key_col).Value
 i = InStr(k, " ")
 If i <> 0 Then
 k = Left(k, i - 1)
 End If
 v = ps.Cells(r, val_col).Value
 i = InStr(v, " ")
 i = InStr(i + 1, v, " ")
 If i <> 0 Then
 v = Left(v, i - 1)
 End If
 If Not roman_map.exists(k) Then
 roman_map.Add k, v
 Else
 vv = roman_map(k)
 If v <> vv Then
 roman_map(k) = "★★"
 End If
 End If
 Next

  ' 辞書を使ってローマ字読みを書き込む
 start_row = 2
 last_row = Cells(Rows.Count, source_col).End(xlUp).Row
 Range(Cells(start_row, dest_col), Cells(last_row, dest_col)).Clear
 For r = start_row To last_row
 Roman = roman_map.Item(Cells(r, source_col).Value)
 If Roman = "" Then
 Roman = "★"
 End If
 Cells(r, dest_col).Value = Roman
 Next


 Set roman_map = Nothing
End Sub

A列の市区町村名のローマ字読みを B列にセットします。
処理が終わってしまえば、郵便番号データは必要ないので KEN_ALL_ROME のシートは削除しても構いません。

前回の質問では「郡」の場合には、町村ではなく「郡」を採用しているので、ローマ字読みも「郡」を対象にしています。

引き当てができない場合には、手で修正しても構わない、ということなので、以下のケースでは探しやすいように、★をローマ字読みの列に入れるようにしました。

数年前の並程度のノートPC で、9000件ほどを 5秒で処理できました。
環境にもよりますが、50000件で十?数十秒のレベルで処理が完了すると思います。


moon-fonduさんのコメント
ありがとうございます、5000件ぐらいのデータでa-kuma3さんのマクロを使うと一瞬でした!“愛知郡”も“★★”に変わりました!ありがとうございました<m(__)m>
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ