[[20031024092722]] 『英字とカタカナの混同する並び替え』(nana7) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『英字とカタカナの混同する並び替え』(nana7)

 たとえば「ジェ」と「J」があるとするとアルファベットが先にきてしまいますが全部混同して読みで並べ替えって方法ありますか?


 ユーザーの望みは果てしなく続く。たしかにそうだと思いますし私もそうしてほしい。
 ユニークなのは認めます、が、こればっかりは無理でしょう。
 (kazu)

ちょっと邪道かもしれないけどありました。 単語登録などでJをじぇとかって登録しておきます。それでたとえばJELだったらじぇと入力して編集しておけばし J(でもほんとはじぇ)す・・・などとなりました。 たまたま思いつきました。
(nana7)

 解決済み?のようですが、

 ローマ字風な発音での比較でよければ、無料ダウンロードにある
 [なお]さん開発、[sousui]さん改良、ついでに[ramrun]追加の、
 ヘボン式+IME式 ユーザー関数を記念にあげときます。

 カタカナをローマ字(英字)にする関数です。
 その名もケートゥーローマ(笑)。
 (ramrun) 

 Function k2roma(ByVal rng As Range)
 ' おおむねヘボン式 + IME式
 ' 長音表記は場合分けが難しいので文字の通りに変換
 ' (「しろうず」と書かれたときに しろ-うず と発音するのか,しろーず と発音するかは不明なので)
 ' 撥音はB,M,Pの前ではMになる。他はNに変換。
 ' 促音は子音を重ねて表記するが,子音がCだった場合は CTに。
 ' はっちょう → HATCHOU
 ' 長音記号は母音を重ねることにしているが,ヘボン式的にはたぶん無視するのが正しい。

 Dim c As Range
 Dim mozi, mozi1, mozi2, mozi3, moziR, R As String
 Dim mozisuu As Integer
 Dim sokuon, hatsuon As Boolean

 '文字読み込み処理
 For Each c In rng
    mozi = WorksheetFunction.Asc(c.Value)
    If mozi = "" Then
        k2roma = ""
        Exit Function
    End If
    mozisuu = Len(mozi)

    '前より変換
    For i = 1 To mozisuu
        mozi1 = Mid(mozi, i, 1)
        mozi2 = Mid(mozi, i + 1, 1)
        mozi3 = Mid(mozi, i + 2, 1)

        If Asc(mozi1) > 165 And Asc(mozi1) < 224 Then  '半角カタカナかどうか判断

            ' 以下 変換表
            Select Case mozi1
                Case "ッ" '促音だった場合
                    sokuon = True
                    GoTo 30
                Case "ン" '撥音だった場合
                    hatsuon = True
                    If i = mozisuu Then
                        R = N
                    Else
                        GoTo 30
                    End If
                Case "ー" '長音記号
                    R = Right(moziR, 1) ' 一応,母音を重ねることにする
                    'R="" '長音記号は無視する場合

                Case "ア"
                    R = "A"
                Case "イ"
                    R = "I"
                Case "ウ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ァ"
                                    R = "VA"
                                    i = i + 2
                                Case "ィ"
                                    R = "VI"
                                    i = i + 2
                                Case "ェ"
                                    R = "VE"
                                    i = i + 2
                                Case "ォ"
                                    R = "VO"
                                    i = i + 2
                                Case "ャ"
                                    R = "VYA"
                                    i = i + 2
                                Case "ュ"
                                    R = "VYU"
                                    i = i + 2
                                Case "ョ"
                                    R = "VYO"
                                    i = i + 2
                                Case Else
                                    R = "VU"
                                    i = i + 1
                            End Select
                        Case "ァ"
                            R = "WHA"
                            i = i + 1
                        Case "ィ"
                            R = "WHI"
                            i = i + 1
                        Case "ェ"
                            R = "WHE"
                            i = i + 1
                        Case "ォ"
                            R = "WHO"
                            i = i + 1
                        Case Else
                            R = "U"
                    End Select
                Case "エ"
                    R = "E"
                Case "オ"
                    R = "O"

                Case "カ"
                    If mozi2 = "゙" Then
                        R = "GA"
                        i = i + 1
                    Else
                        R = "KA"
                    End If
                Case "キ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ャ"
                                    R = "GYA"
                                    i = i + 2
                                Case "ィ"
                                    R = "GYI"
                                    i = i + 2
                                Case "ュ"
                                    R = "GYU"
                                    i = i + 2
                                Case "ェ"
                                    R = "GYE"
                                    i = i + 2
                                Case "ョ"
                                    R = "GYO"
                                    i = i + 2
                                Case Else
                                    R = "GI"
                                    i = i + 1
                            End Select
                        Case "ャ"
                            R = "KYA"
                            i = i + 1
                        Case "ィ"
                            R = "KYI"
                            i = i + 1
                        Case "ュ"
                            R = "KYU"
                            i = i + 1
                        Case "ェ"
                            R = "KYU"
                            i = i + 1
                        Case "ョ"
                            R = "KYO"
                            i = i + 1
                        Case Else
                            R = "KI"
                    End Select
                Case "ク"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ァ"
                                    R = "GWA"
                                    i = i + 2
                                Case "ィ"
                                    R = "GWI"
                                    i = i + 2
                                Case "ゥ"
                                    R = "GWU"
                                    i = i + 2
                                Case "ェ"
                                    R = "GWE"
                                    i = i + 2
                                Case "ォ"
                                    R = "GWO"
                                    i = i + 2
                                Case Else
                                    R = "GU"
                                    i = i + 1
                            End Select
                        Case "ァ"
                            R = "QWA"
                            i = i + 1
                        Case "ィ"
                            R = "QWI"
                            i = i + 1
                        Case "ゥ"
                            R = "QWU"
                            i = i + 1
                        Case "ェ"
                            R = "QWE"
                            i = i + 1
                        Case "ォ"
                            R = "QWO"
                            i = i + 1
                        Case "ャ"
                            R = "QYA"
                            i = i + 1
                        Case "ュ"
                            R = "QYU"
                            i = i + 1
                        Case "ョ"
                            R = "QYO"
                            i = i + 1
                        Case Else
                            R = "KU"
                    End Select
                Case "ケ"
                    If mozi2 = "゙" Then
                        R = "GE"
                        i = i + 1
                    Else
                        R = "KE"
                    End If

                Case "コ"
                    If mozi2 = "゙" Then
                        R = "GO"
                        i = i + 1
                    Else
                        R = "KO"
                    End If

                Case "サ"
                    If mozi2 = "゙" Then
                        R = "ZA"
                        i = i + 1
                    Else
                        R = "SA"
                    End If
                Case "シ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ャ"
                                    R = "JA"
                                    i = i + 2
                                Case "ィ"
                                    R = "JYI"
                                    i = i + 2
                                Case "ュ"
                                    R = "JU"
                                    i = i + 2
                                Case "ェ"
                                    R = "JE"
                                    i = i + 2
                                Case "ョ"
                                    R = "JO"
                                    i = i + 2
                                Case Else
                                    R = "JI"
                                    i = i + 1
                            End Select
                        Case "ャ"
                            R = "SHA"
                            i = i + 1
                        Case "ィ"
                            R = "SYI"
                            i = i + 1
                        Case "ュ"
                            R = "SHU"
                            i = i + 1
                        Case "ョ"
                            R = "SHO"
                            i = i + 1
                        Case Else
                            R = "SHI"
                    End Select
                Case "ス"
                    Select Case mozi2
                        Case "゙"
                            R = "ZU"
                            i = i + 1
                        Case "ァ"
                            R = "SWA"
                            i = i + 1
                        Case "ィ"
                            R = "SWI"
                            i = i + 1
                        Case "ゥ"
                            R = "SWU"
                            i = i + 1
                        Case "ェ"
                            R = "SWE"
                            i = i + 1
                        Case "ォ"
                            R = "SWO"
                            i = i + 1
                        Case Else
                            R = "SU"
                    End Select
                Case "セ"
                    If mozi2 = "゙" Then
                        R = "ZE"
                        i = i + 1
                    Else
                        R = "SE"
                    End If
                Case "ソ"
                    If mozi2 = "゙" Then
                        R = "ZO"
                        i = i + 1
                    Else
                        R = "SO"
                    End If

                Case "タ"
                    If mozi2 = "゙" Then
                        R = "DA"
                        i = i + 1
                    Else
                        R = "TA"
                    End If
                Case "チ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ャ"
                                    R = "JA"
                                    i = i + 2
                                Case "ィ"
                                    R = "DYI"
                                    i = i + 2
                                Case "ュ"
                                    R = "JU"
                                    i = i + 2
                                Case "ェ"
                                    R = "DYE"
                                    i = i + 2
                                Case "ョ"
                                    R = "JO"
                                    i = i + 2
                                Case Else
                                    R = "JI"
                                    i = i + 1
                            End Select
                        Case "ャ"
                            R = "CHA"
                            i = i + 1
                        Case "ィ"
                            R = "CYI"
                            i = i + 1
                        Case "ュ"
                            R = "CHU"
                            i = i + 1
                        Case "ェ"
                            R = "CHE"
                            i = i + 1
                        Case "ョ"
                            R = "CHO"
                            i = i + 1
                        Case Else
                            R = "CHI"
                    End Select
                Case "ツ"
                    Select Case mozi2
                        Case "゙"
                            R = "ZU"
                            i = i + 1
                        Case "ァ"
                            R = "TSA"
                            i = i + 1
                        Case "ィ"
                            R = "TSI"
                            i = i + 1
                        Case "ェ"
                            R = "TSE"
                            i = i + 1
                        Case "ォ"
                            R = "TSO"
                            i = i + 1
                        Case Else
                            R = "TSU"
                    End Select
                Case "テ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ャ"
                                    R = "DHA"
                                    i = i + 2
                                Case "ィ"
                                    R = "DHI"
                                    i = i + 2
                                Case "ュ"
                                    R = "DHU"
                                    i = i + 2
                                Case "ェ"
                                    R = "DHE"
                                    i = i + 2
                                Case "ョ"
                                    R = "DHO"
                                    i = i + 2
                                Case Else
                                    R = "DE"
                                    i = i + 1
                            End Select
                        Case "ャ"
                            R = "THA"
                            i = i + 1
                        Case "ィ"
                            R = "THI"
                            i = i + 1
                        Case "ュ"
                            R = "THU"
                            i = i + 1
                        Case "ェ"
                            R = "THE"
                            i = i + 1
                        Case "ョ"
                            R = "THO"
                            i = i + 1
                        Case Else
                            R = "TE"
                    End Select
                Case "ト"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ァ"
                                    R = "DWA"
                                    i = i + 2
                                Case "ィ"
                                    R = "DWI"
                                    i = i + 2
                                Case "ゥ"
                                    R = "DWU"
                                    i = i + 2
                                Case "ェ"
                                    R = "DWE"
                                    i = i + 2
                                Case "ォ"
                                    R = "DWO"
                                    i = i + 2
                                Case Else
                                    R = "DO"
                                    i = i + 1
                            End Select
                        Case "ァ"
                            R = "TWA"
                            i = i + 1
                        Case "ィ"
                            R = "TWI"
                            i = i + 1
                        Case "ゥ"
                            R = "TWU"
                            i = i + 1
                        Case "ェ"
                            R = "TWE"
                            i = i + 1
                        Case "ォ"
                            R = "TWO"
                            i = i + 1
                        Case Else
                            R = "TO"
                    End Select
                Case "ナ"
                    R = "NA"
                Case "ニ"
                    Select Case mozi2
                        Case "ャ"
                            R = "NYA"
                            i = i + 1
                        Case "ィ"
                            R = "NYI"
                            i = i + 1
                        Case "ュ"
                            R = "NYU"
                            i = i + 1
                        Case "ェ"
                            R = "NYE"
                            i = i + 1
                        Case "ョ"
                            R = "NYO"
                            i = i + 1
                        Case Else
                            R = "NI"
                    End Select
                Case "ヌ"
                    R = "NU"
                Case "ネ"
                    R = "NE"
                Case "ノ"
                    R = "NO"

                Case "ハ"
                    Select Case mozi2
                        Case "゙"
                            R = "BA"
                            i = i + 1
                        Case "゚"
                            R = "PA"
                            i = i + 1
                        Case Else
                            R = "HA"
                    End Select
                Case "ヒ"
                    Select Case mozi2
                        Case "゙"
                            Select Case mozi3
                                Case "ャ"
                                    R = "BYA"
                                    i = i + 2
                                Case "ィ"
                                    R = "BYI"
                                    i = i + 2
                                Case "ュ"
                                    R = "BYU"
                                    i = i + 2
                                Case "ェ"
                                    R = "BYE"
                                    i = i + 2
                                Case "ョ"
                                    R = "BYO"
                                    i = i + 2
                                Case Else
                                    R = "BI"
                                    i = i + 1
                            End Select
                        Case "゚"
                            Select Case mozi3
                                Case "ャ"
                                    R = "PYA"
                                    i = i + 2
                                Case "ィ"
                                    R = "PYI"
                                    i = i + 2
                                Case "ュ"
                                    R = "PYU"
                                    i = i + 2
                                Case "ェ"
                                    R = "PYE"
                                    i = i + 2
                                Case "ョ"
                                    R = "PYO"
                                    i = i + 2
                                Case Else
                                    R = "PI"
                                    i = i + 1
                            End Select
                        Case "ャ"
                            R = "HYA"
                            i = i + 1
                        Case "ィ"
                            R = "HYI"
                            i = i + 1
                        Case "ュ"
                            R = "HYU"
                            i = i + 1
                        Case "ェ"
                            R = "HYE"
                            i = i + 1
                        Case "ョ"
                            R = "HYO"
                            i = i + 1
                        Case Else
                            R = "HI"
                    End Select
                Case "フ"
                    Select Case mozi2
                        Case "゙"
                            R = "BU"
                            i = i + 1
                        Case "゚"
                            R = "PU"
                            i = i + 1
                        Case "ァ"
                            R = "FA"
                            i = i + 1
                        Case "ィ"
                            R = "FI"
                            i = i + 1
                        Case "ゥ"
                            R = "FU"
                            i = i + 1
                        Case "ェ"
                            R = "FE"
                            i = i + 1
                        Case "ォ"
                            R = "FO"
                            i = i + 1
                        Case "ャ"
                            R = "FYA"
                            i = i + 1
                        Case "ュ"
                            R = "FYU"
                            i = i + 1
                        Case "ョ"
                            R = "FYO"
                            i = i + 1
                        Case Else
                            R = "FU"
                    End Select
                Case "ヘ"
                    Select Case mozi2
                        Case "゙"
                            R = "BE"
                            i = i + 1
                        Case "゚"
                            R = "PE"
                            i = i + 1
                        Case Else
                            R = "HE"
                    End Select
                Case "ホ"
                    Select Case mozi2
                        Case "゙"
                            R = "BO"
                            i = i + 1
                        Case "゚"
                            R = "PO"
                            i = i + 1
                        Case Else
                            R = "HO"
                    End Select

                Case "マ"
                    R = "MA"
                Case "ミ"
                    Select Case mozi2
                        Case "ャ"
                            R = "MYA"
                            i = i + 1
                        Case "ィ"
                            R = "MYI"
                            i = i + 1
                        Case "ュ"
                            R = "MYU"
                            i = i + 1
                        Case "ェ"
                            R = "MYE"
                            i = i + 1
                        Case "ョ"
                            R = "MYO"
                            i = i + 1
                        Case Else
                            R = "MI"
                    End Select
                Case "ム"
                    R = "MU"
                Case "メ"
                    R = "ME"
                Case "モ"
                    R = "MO"

                Case "ヤ"
                    R = "YA"
                Case "ユ"
                    R = "YU"
                Case "ヨ"
                    R = "YO"

                Case "ラ"
                    R = "RA"
                Case "リ"
                    Select Case mozi2
                        Case "ャ"
                            R = "RYA"
                            i = i + 1
                        Case "ィ"
                            R = "RYI"
                            i = i + 1
                        Case "ュ"
                            R = "RYU"
                            i = i + 1
                        Case "ェ"
                            R = "RYE"
                            i = i + 1
                        Case "ョ"
                            R = "RYO"
                            i = i + 1
                        Case Else
                            R = "RI"
                    End Select
                Case "ル"
                    R = "RU"
                Case "レ"
                    R = "RE"
                Case "ロ"
                    R = "RO"

                Case "ワ"
                    R = "WA"
                Case "ヲ"
                    R = "WO"
                Case "ン"
                    R = "N"
                Case Else
                    R = "?"
                End Select
            Else
            R = mozi1
        End If                  '' 変換表 終了

        If sokuon = True Then '促音処理
            sokuon = False
            If Left(R, 1) = "C" Then
                R = "T" & R
            Else
                R = Left(R, 1) & R
            End If
        End If

        If hatsuon = True Then '撥音処理
            hatsuon = False
            If Left(R, 1) = "B" Or Left(R, 1) = "M" Or Left(R, 1) = "P" Then
                R = "M" & R
            Else
                R = "N" & R
            End If
        End If

        moziR = moziR & R
 30: Next i

    ' 変換結果記載
    k2roma = moziR
 Next c

 End Function

 すんごいコード!

 私のニックネームの読み方は?
    1)ジュン ゴジュウ サン
    2)ジュン ゴー サン
 少しひねって
    3)ジュン コ サン
 少しひねくれて
    4)ジュン コー サン
    5)ジェイ ユー エヌ ゴー サン(ゴジュウ サン)

 このユーザー関数では何番がいいのでしょう??? ん!  (jun53)

 間違い訂正(汗)。
 2)がよろしいかと思います。
 (ramrun)

 実は未だトライしてません。明日調べてみます。 チョット ドキドキ!!  (jun53)

 結果報告です。

 ジュン ゴジュウ サン		  JUN GOJUU SAN
 ジュン ゴー サン			  JUN GOO SAN
 ジュン コ サン			  JUN KO SAN
 ジュン コー サン			  JUN KOO SAN
 ジェイ ユー エヌ ゴー サン		  JEI YUU ENU GOO SAN
 ジェイ ユー エヌ ゴジュウ サン	  JEI YUU ENU GOJUU SAN

 おまけで
 ジュン ゴミ			  JUN GOMI

 以上でした。。。   (jun53)

いろいろありがとうございました。VBAはまったくわかりません><。(nana7)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.