ExcelのA1セルにカタカナを入力し、
B1セルに「=KatakanaToRomaji(A1)」を入力しておき、
マクロでKatakanaToRomajiを作成しています。
B1セルには、A1セルに入力したカタカナをヘボン式ローマ字に変換した文字列が表示されて欲しいです。
そこでマクロのKatakanaToRomajiについて、今回お伺いしたいです。
■↓マクロ部分
Function KatakanaToRomaji(a As String) As String Dim x As Variant Dim y As Variant Dim Z As String Dim i As Integer ' ①文字変換 x = Array("ニャ", "ニュ", "ニョ", "ビャ", "ビュ", "ビョ", "ミャ", "ミュ", "ミョ", "ギャ", "ギュ", "ギョ", "ジャ", "ジュ", "ジョ", "リャ", "リュ", "リョ", "ヒャ", "ヒュ", "ヒョ", "ティ", "ディ", "ピャ", "ピュ", "ピョ", "キャ", "キュ", "キョ", "チャ", "チュ", "チョ", "シャ", "シュ", "ショ", "ティ", "ディ", "ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ヲ", "ン", "ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ジ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "パ", "ピ", "プ", "ペ", "ポ", "ャ", "ュ", "ョ", "ァ", "ィ", "ェ", "ォ", "ヴ", "ヂ") y = Array("NYA", "NYU", "NYO", "BYA", "BYU", "BYO", "MYA", "MYU", "MYO", "GYA", "GYU", "GYO", "JA", "JU", "JO", "RYA", "RYU", "RYO", "HYA", "HYU", "HYO", "THI", "DHI", "PYA", "PYU", "PYO", "KYA", "KYU", "KYO", "CHA", "CHU", "CHO", "SHA", "SHU", "SHO", "THI", "DHI", "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", "WO", "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", "YA", "YU", "YO", "A", "I", "E", "O", "V", "JI") Z = a For i = 0 To UBound(x) Z = Replace(Z, x(i), y(i)) Next i ' ②ヘボン式変換 Z = Replace(Z, "ッP", "PP") Z = Replace(Z, "ッS", "SS") Z = Replace(Z, "ッT", "TT") Z = Replace(Z, "ッK", "KK") Z = Replace(Z, "ッC", "TC") Z = Replace(Z, "ッH", "HH") Z = Replace(Z, "YUN", "UN") Z = Replace(Z, "ー", "-") Z = Replace(Z, "NB", "MB") Z = Replace(Z, "NM", "MM") Z = Replace(Z, "NP", "MP") Z = Replace(Z, "OO", "O") Z = Replace(Z, "OU", "O") Z = Replace(Z, "UU", "U") KatakanaToRomaji = Z End Function
■↑ここまで
①文字変換で、まずはカタカナをローマ字に変換し、
②ヘボン式変換で、ヘボン式ならではの変換をしています。
②により、
例えば「伊藤」の場合は、「イトウ」→「ito」になるようにしています。
ですが、「井上」の場合、「イノウエ」が、
「inoue」になって欲しいのですが、
②により、「inoe」になってしまいます。
②の変換処理が、こちらを立てればあちらが立たずという事になってしまいます。
こういった場合、どちらも立たせる方法はありますでしょうか。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/07 07:51