エクセルでひらがなをローマ字変換!関数とVBA自動化テクニック

目次
エクセルでひらがなをローマ字変換!関数とVBA自動化テクニック
エクセルでひらがなをローマ字変換!関数とVBA自動化テクニック
@ creator • Click to Play Video Inline
🎵 エクセルでひらがなをローマ字変換!関数とVBA自動化テクニック

社員名簿の作成や顧客データの海外システム連携、パスポート申請用データの整理など、日本語の氏名を英語表記へ変換する作業は多くのビジネス現場で発生します。しかし、現在のExcelには「ひらがなやカタカナを直接ローマ字に変換する専用関数」が標準機能として搭載されていません。

大量のデータを前に「1件ずつ手入力するしかないのか」と頭を抱える担当者も少なくありませんが、仕組みさえ理解すれば一瞬で自動化できます。本稿では、VBA(マクロ)を活用した一括変換コードから、マクロが使えない環境での関数アプローチ、実務で必須となるヘボン式表記の注意点まで、現場で即座に役立つ解決策を徹底解説します。

📌 【この記事の重要ポイントまとめ】
  • 要点1:Excelには直接の変換関数がないものの、VBAマクロやマッピングテーブルを用いれば一括自動変換が可能。
  • 要点2:公式文書やパスポート表記で求められる「ヘボン式」の特殊ルール(長音や撥音)もコードで完全再現できる。
  • 要点3:PHONETIC関数やUPPER関数を組み合わせることで、漢字氏名から英語表記への整形まで全自動化が実現。

【基本仕様】エクセルにローマ字変換の専用関数がない理由と現状の壁

セル内の文字を変換する際、まず思い浮かぶのが関数の活用です。しかし、Excelに関数ライブラリをいくら探しても「ROMAN」や「ROMAJI」といった名称の変換関数は見当たりません。なお、Excelに存在する「ROMAN関数」は数値をローマ数字(I, V, Xなど)に変換するためのものであり、日本語のローマ字化には対応していません。

日本語の読み仮名を取得する代表的な機能としてPHONETIC関数があります。漢字から「ふりがな」を抽出する際には極めて有用ですが、出力されるのはあくまで「ひらがな」または「カタカナ」です。アルファベット表記へ橋渡しするには、ユーザー側で変換ロジックを補う必要があります。

手作業でのローマ字入力は、タイピングミスを誘発するだけでなく、「し」を「SI」とするか「SHI」とするかといった表記揺れの原因になります。数百・数千件に及ぶ名簿データを正確に処理するためには、あらかじめルールを定めた自動変換の仕組みを導入するのが最も確実です。

【即効テク】コピペで動く!ひらがなをヘボン式ローマ字へ変換するVBAコード

業務効率を最優先にするなら、VBA(Visual Basic for Applications)を使ったユーザー定義関数の作成が最もスマートな解決策です。以下のマクロコードをワークブックに登録するだけで、通常の計算式と同じ感覚でセル内に「=ToHepburn(A2)」と入力してヘボン式ローマ字を取得できるようになります。

まずは[Alt]+[F11]キーを押してVBAエディタを開き、[挿入]→[標準モジュール]を選択して次のコードを貼り付けてください。

Function ToHepburn(ByVal txt As String) As String Dim i As Long, n As Long Dim c1 As String, c2 As String, res As String Dim hira As Variant, roma As Variant ' 2文字の拗音・促音テーブル Dim hira2 As Variant, roma2 As Variant hira2 = Array("きゃ", "きゅ", "きょ", "しゃ", "しゅ", "しょ", "ちゃ", "ちゅ", "ちょ", _ "にゃ", "にゅ", "にょ", "ひゃ", "ひゅ", "ひょ", "みゃ", "みゅ", "みょ", _ "りゃ", "りゅ", "りょ", "ぎゃ", "ぎゅ", "ぎょ", "じゃ", "じゅ", "じょ", _ "びゃ", "びゅ", "びょ", "ぴゃ", "ぴゅ", "ぴょ", "っち", "っちゃ", "っちゅ", "っちょ") roma2 = Array("KYA", "KYU", "KYO", "SHA", "SHU", "SHO", "CHA", "CHU", "CHO", _ "NYA", "NYU", "NYO", "HYA", "HYU", "HYO", "MYA", "MYU", "MYO", _ "RYA", "RYU", "RYO", "GYA", "GYU", "GYO", "JA", "JU", "JO", _ "BYA", "BYU", "BYO", "PYA", "PYU", "PYO", "TCHI", "TCHA", "TCHU", "TCHO") ' 1文字の清音・濁音・半濁音テーブル hira = Array("あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", _ "さ", "し", "す", "せ", "そ", "た", "ち", "つ", "て", "と", _ "な", "に", "ぬ", "ね", "の", "は", "ひ", "ふ", "へ", "ほ", _ "ま", "み", "む", "め", "も", "や", "ゆ", "よ", _ "ら", "り", "る", "れ", "ろ", "わ", "を", "ん", _ "が", "ぎ", "ぐ", "げ", "ご", "ざ", "じ", "ず", "ぜ", "ぞ", _ "だ", "ぢ", "づ", "で", "ど", "ば", "び", "ぶ", "べ", "ぼ", _ "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", "ー") roma = Array("A", "I", "U", "E", "O", "KA", "KI", "KU", "KE", "KO", _ "SA", "SHI", "SU", "SE", "SO", "TA", "CHI", "TSU", "TE", "TO", _ "NA", "NI", "NU", "NE", "NO", "HA", "HI", "FU", "HE", "HO", _ "MA", "MI", "MU", "ME", "MO", "YA", "YU", "YO", _ "RA", "RI", "RU", "RE", "RO", "WA", "O", "N", _ "GA", "GI", "GU", "GE", "GO", "ZA", "JI", "ZU", "ZE", "ZO", _ "DA", "JI", "ZU", "DE", "DO", "BA", "BI", "BU", "BE", "BO", _ "PA", "PI", "PU", "PE", "PO", "") txt = StrConv(txt, vbHiragana) ' カタカナをひらがなに統一 n = Len(txt) i = 1 Do While i <= n c1 = Mid(txt, i, 1) c2 = Mid(txt, i, 2) ' 2文字マッチの判定 Dim matched As Boolean: matched = False Dim idx As Variant idx = Application.Match(c2, hira2, 0) If Not IsError(idx) Then res = res & roma2(idx - 1) i = i + 2 matched = True Else ' 促音「っ」の処理(単独) If c1 ="っ" And i < n Then Dim nextChar As String nextChar = Mid(txt, i + 1, 1) idx = Application.Match(nextChar, hira, 0) If Not IsError(idx) Then Dim nextRoma As String: nextRoma = roma(idx - 1) If Left(nextRoma, 2) ="CH" Then res = res & "T" Else res = res & Left(nextRoma, 1) End If End If i = i + 1 matched = True End If End If ' 1文字マッチの判定 If Not matched Then idx = Application.Match(c1, hira, 0) If Not IsError(idx) Then ' 撥音「ん」がB, M, Pの前の場合は「M」にする If c1 ="ん" And i < n Then Dim afterN As String: afterN = Mid(txt, i + 1, 1) Dim idxAfter As Variant: idxAfter = Application.Match(afterN, hira, 0) If Not IsError(idxAfter) Then Dim rAfter As String: rAfter = roma(idxAfter - 1) If Left(rAfter, 1) ="B" Or Left(rAfter, 1) ="M" Or Left(rAfter, 1) ="P" Then res = res & "M" Else res = res & "N" End If Else res = res & "N" End If Else res = res & roma(idx - 1) End If Else res = res & c1 ' マッチしない文字(英数やスペース)はそのまま End If i = i + 1 End If Loop ToHepburn = res End Function

このマクロを導入することで、促音(「きっぷ」→「KIPPU」)や「っ+ち」(「まっち」→「MATCHI」)、撥音(「なんば」→「NAMBA」)といったパスポート表記で定められているヘボン式固有の例外規則にも自動で対応できます。

【関数のみで完結】マクロ禁止環境でも使える変換テーブル×関数テクニック

セキュリティポリシーの都合上、社内規定でマクロ(.xlsmファイル)の使用が制限されているケースもあります。その場合は、別シートに「五十音変換テーブル」を作成し、文字列操作関数を組み合わせて対応します。

構造としては、別シート(シート名:変換表)のA列にひらがな、B列に対応するローマ字を一覧化しておきます。短文であれば、Microsoft 365で利用可能なREDUCE関数とLAMBDA関数を組み合わせることで、セル内の文字列を順次置換していく手法が実用的です。

=REDUCE(A2, 変換表!$A$2:$A$100, LAMBDA(text,val, SUBSTITUTE(text, val, XLOOKUP(val, 変換表!$A$2:$A$100, 変換表!$B$2:$B$100))))

従来のExcelバージョンで配列数式が使えない場合は、氏名データをあらかじめ「姓」と「名」に分割し、1文字ずつ分解したセルに対してXLOOKUP関数やVLOOKUP関数を適用して結合します。多少のセル領域を消費しますが、外部プログラムを一切使わずに完全なワークシート関数のみで安全に運用可能です。

【実務直結】漢字氏名から英語表記を自動生成する4つのステップ

名簿管理における最終ゴールは、単なるひらがなの変換ではなく、「山田 太郎」という漢字表記から「TARO YAMADA」や「Yamada, Taro」といった国際標準の英語表記を作り出すことです。次の手順を踏むことで、作業を完全に自動化できます。

  1. PHONETIC関数でふりがなを抽出:漢字セル(A2)から「=PHONETIC(A2)」でふりがな(ひらがな・カタカナ)を取得します。
  2. 姓名の分離:姓と名の間に全角スペースがある場合、「LEFT関数」や「MID関数」、「TEXTSPLIT関数」を使って名字と名前に切り分けます。
  3. ローマ字変換の適用:前述のVBA関数(=ToHepburn(...))を姓名それぞれに適用します。
  4. 大文字・小文字の整形:用途に応じてUPPER関数(すべて大文字)、LOWER関数(すべて小文字)、またはPROPER関数(頭文字のみ大文字)を通します。

たとえば、「名 姓」の順で頭文字のみ大文字に整えたい場合は、次のような計算式を組み立てます。

=PROPER(ToHepburn(名セル)) & " " & UPPER(ToHepburn(姓セル))

この数式を通せば、「Taro YAMADA」のようなビジネスメールや名札で標準的に用いられるスタイルが瞬時に完成します。

【規格の違い】ヘボン式・訓令式の違いとパスポート表記における注意点

システム構築や海外出張の手配において最も注意しなければならないのが、「ヘボン式ローマ字」と「訓令式ローマ字」の規格差です。小学校の国語教育では訓令式が教えられることがありますが、パスポートや国際クレジットカード、航空券予約では原則としてヘボン式が採用されています。

ひらがな訓令式(小学校等)ヘボン式(パスポート等)
しSISHI
ちTICHI
つTUTSU
ふHUFU
じ / ぢZIJI

さらに見落としやすいのが「長音(伸ばす音)」の処理です。ヘボン式では原則として「O」や「U」の長音表記(う・お)を記載しません。たとえば、「佐藤(さとう)」は「SATOU」ではなく「SATO」、「大野(おおの)」は「OONO」ではなく「ONO」となります(希望によりOHNO等の非ヘボン式表記が認められる特例もあります)。自動変換ツールを運用する際は、こうしたルールを踏まえた最終チェックが不可欠です。

【トラブルシューティング】カタカナ混じりや特殊な読みを正確に変換するコツ

実際の業務データには、外来語を含むカタカナ表記や、旧字体・珍しい読み方を持つ人名が多数混在しています。意図した結果にならない場合の代表的な原因と対策を把握しておきましょう。

まず、PHONETIC関数が意図しないふりがなを返してくるケースです。これはExcelが「セルに文字を入力したときのキーボード履歴」を保持しているためです。外部システムからCSVなどで取り込んだデータにはふりがな情報が存在しないことが多く、その場合はPHONETIC関数を使っても漢字がそのまま表示されてしまいます。

このトラブルを解消するには、対象範囲を選択した状態でショートカットキー[Alt]+[Shift]+[↑]を押すか、VBAでSelection.SetPhoneticを実行してふりがなを再割り当てします。また、カタカナで入力されたデータであっても、先述のVBAコード内にあるStrConv(txt, vbHiragana)の処理により、自動的にひらがなへ変換されてからローマ字化されるため問題なく動作します。

【エクセルでひらがなをローマ字に変換する方法】に関するよくある質問(FAQ)

Q1:PHONETIC関数を使っても漢字がそのまま出てきてローマ字化できません。
A1:Webサイトや基幹システムからコピー&ペーストしたデータには、Excel内部の「ふりがな情報」が含まれていません。セルを選択して[Alt]+[Shift]+[↑]キーを押してふりがなを強制生成するか、ひらがな専用の入力列を別途用意してください。

Q2:小文字で出力されたローマ字をすべて大文字にするにはどうすればいいですか?
A2:Excel標準のUPPER関数を使用します。たとえば「=UPPER(ToHepburn(A2))」のようにネスト(入れ子)することで、変換結果をすべて「YAMADA」のような大文字表記に統一できます。

Q3:マクロ付きブック(.xlsm)として保存しないとVBAは消えてしまいますか?
A3:はい。通常の「.xlsx」形式で保存すると作成したVBAコードが消去されてしまいます。必ず[ファイル]→[名前を付けて保存]から、ファイルの種類を「Excel マクロ有効ブック(*.xlsm)」に指定して保存してください。

まとめ:業務効率を劇的に高めるローマ字自動化の導入ステップ

Excelにおけるひらがなのローマ字変換は、標準関数こそ用意されていないものの、VBAのユーザー定義関数を取り入れることで驚くほど簡単に自動化できます。特にパスポート基準に準拠したヘボン式変換ロジックを一度ワークブックに組み込んでおけば、名簿作成や海外向けシステム連携にかかる時間を大幅に圧縮可能です。

まずは数件のテストデータを用意し、自社の運用ルール(ヘボン式の適用範囲や長音の扱い、姓名の並び順など)に合致しているか確認しながら導入を進めてみてください。手作業による転記作業から解放され、ミスのない確実なデータ管理環境が整います。 (出典: ひらがな を ローマ字 に 変換 エクセル(Yahoo!ニュース))

ひらがな を ローマ字 に 変換 エクセル
ひらがな を ローマ字 に 変換 エクセル
ひらがな を ローマ字 に 変換 エクセル