/*Google AdSense自動広告*/

2018年7月26日木曜日

Excel VBA 表のルールに従ってひらがなをローマ字変換してくれるツール

意外といえば意外ですが、Excelにはひらがなをローマ字に変換する関数がありません。そこでWebサービスやらを利用するのですが、大量のデータをローカルPCで処理したい時もあるはず。また、業種によって「しゅはshuだ、いやsyuだ」などと表記が統一されていないのも現実で、困っている人は多いのでないかしら?

私が実務で作成・使用しているExcelマクロを公開しますので、よろしければご利用ください。ダウンロードはページ最下部です。


ワークシート[list]の仕様

「ひらがな」「ローマ字」の2列のリストを作成。ひらがな列に対象文字列を入力、標準モジュール[convertList]を実行(ボタンに登録してもOK)すると、ローマ字列にローマ字が記入されます。

標準モジュール


Option Explicit

Public Sub convertList()

    Dim sheet_list As Worksheet
    Set sheet_list = ThisWorkbook.Worksheets("list")

    Dim rKana As Range
    Set rKana = sheet_list.Range("A2")
   
    Dim kanaConverter As kanaConverter
    Set kanaConverter = New kanaConverter
       
    Do While Not IsEmpty(rKana)
        rKana.Offset(0, 1).Value = kanaConverter.convertKanaToRoman(rKana.Value)
        Set rKana = rKana.Offset(1, 0)
    Loop
   
    MsgBox "finished."
   
End Sub

クラスモジュール


Private kanaRomans As Dictionary

Private Sub Class_Initialize()

    Dim rTarget As Range

    Set kanaRomans = New Dictionary
    Set rTarget = ThisWorkbook.Worksheets("convTable").Range("A2")

    Do While Not IsEmpty(rTarget)
        If Not kanaRomans.Exists(rTarget.Value) Then
            kanaRomans.Add rTarget.Value, rTarget.Offset(0, 1).Value
        End If
       
        Set rTarget = rTarget.Offset(1, 0)
    Loop
   
End Sub

Public Function convertKanaToRoman(inputKana)
   
    Dim output, kanaRoman
   
    output = StrConv(inputKana, vbHiragana)
       
    For Each kanaRoman In kanaRomans
        output = Replace(output, kanaRoman, kanaRomans(kanaRoman))
    Next
   
    output = convert_sokuon(output) '促音判定
    output = StrConv(output, vbNarrow) '半角
   
    convertKanaToRoman = output
   
End Function

Private Function convert_sokuon(inputKana)
   
    Dim place_sokuon As Integer
    place_sokuon = InStr(inputKana, "っ")
       
    Do While place_sokuon > 0
        inputKana = Left(inputKana, place_sokuon - 1) & _
          Mid(inputKana, place_sokuon + 1, 1) & _
          Right(inputKana, Len(inputKana) - place_sokuon)
       
        place_sokuon = InStr(place_sokuon + 1, inputKana, "っ")
    Loop
   
    convert_sokuon = inputKana

End Function



ワークシート[convTable]の内容

特殊な変換は、一番上に記載します。上から順に変換されていくため。業務に応じてルール表を編集できますが、VBAではなくワークシート上の編集ですので、コードが分からない人でもいじれるのが利点です。

仮名 ローマ字
いおんもーる AEONMALL
いおん AEON
えー A
びー B
しー C
りょう ryou
りゅう ryuu
みょう myou
みゅう myuu
ぴょう pyou
びょう byou
ひょう hyou
ぴゅう pyuu
びゅう byuu
ひゅう hyuu
にょう nyou
にゅう nyuu
ちょう tyou
ちゅう tyuu
じょう jyou
しょう syou
じゅう juu
しゅう syuu
ぎょう gyou
きょう kyou
ぎゅう gyuu
きゅう kyuu
をう ou
ろう rou
るう ruu
りょ ryo
りゅ ryu
りゃ rya
よう you
ゆう yuu
もう mou
むう muu
みょ myo
みゅ myu
みゃ mya
ぽう pou
ぼう bou
ほう hou
ぷう puu
ぶう buu
ふう fuu
ぴょ pyo
びょ byo
ひょ hyo
ぴゅ pyu
びゅ byu
ひゅ hyu
ぴゃ pya
びゃ bya
ひゃ hya
のう nou
ぬう nuu
にょ nyo
にゅ nyu
にゃ nya
どう dou
とう tou
づう zuu
つう tsu
ちょ tyo
ちゅ tyu
ちゃ tya
ぞう zou
そう sou
ずう zuu
すう suu
じょ jyo
しょ syo
じゅ jyu
しゅ syu
じゃ jya
しゃ sya
ごう gou
こう kou
ぐう guu
くう kuu
ぎょ gyo
きょ kyo
ぎゅ gyu
きゅ kyu
ぎゃ gya
きゃ kya
おお oo
おう ou
うう uu
n
o
e
i
wa
ro
re
ru
ri
ra
yo
yu
ya
mo
me
mu
mi
ma
po
bo
ho
pe
be
he
pu
bu
fu
pi
bi
hi
pa
ba
ha
no
ne
nu
ni
na
do
to
de
te
du
tu
ji
ti
da
ta
zo
so
ze
se
zu
su
ji
si
za
sa
go
ko
ge
ke
gu
ku
gi
ki
ga
ka
o
e
u
i
a

ローマ字変換ツール(Excelマクロブック)のダウンロード


0 件のコメント:

コメントを投稿