• ベストアンサー

Excelで英数字をカナに変換する方法は?

ほかのアプリケーションからデータをインポートし、それをあいうえお順に並べ替えをしたいのですが、一部のデータがアルファベット表示になり正しく並べ替えができません。Excelのデータをアルファベット表示からカナ表記に変える方法(関数?)をおしえてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

ローマ字→かな(カナ、半角カナ)変換を作ってみました。 変換部分より変換定義部分が長く、かなり長くなりました。質問内容から逸脱して、ローマ字文書を変換するVBAになった嫌いがあります。変換定義をシートに登録すれば、20行くらいで書けるようです。  =fncRomaji_To_Kana(A1,1) のようにして使います。A1はローマ字が入力されているセル、2つ目の引数は、  1:ローマ字部分を半角カタカナで表示  2:ローマ字部分を全角カタカナで表示  3:ローマ字部分を全角ひらがなで表示 IME2000の入力(Helpのローマ字とかな対応一覧)とほぼ一致した変換をします。(laなどを除外) IMEにない入力も追加できます。(HWA=ふぁ など) 長いローマ字文書で試しましたが、長音(例:RO-MAとROMA)はしょうがないですかね(Excel2000) 下記を標準モジュールを挿入して貼り付けます。時間がたちましたが参考に回答します。何かの役に立つかもしれません。 Dim Ro(300) As String, Ka(300) As String 'ローマ字、カナ Dim cot As Integer            '変換する個数カウンタ Dim elm As String             '変換定義文字列 Dim rm As String, kn As String      'ローマ字の先頭、カナの先頭 Dim ps As Integer             '変換しない箇所 Dim L As Integer, m As Integer      'カウンタ Public Function fncRomaji_To_Kana(myRange As Range, chgMode As Integer)   Dim moji As String   'セルの文字   Dim pot As Integer   '検索した位置   Dim okikae As String  '置き換えるカナ文字   Dim okikaeTU As String '置き換えるカナ文字の『っ』   cot = 0   Call HenkanSet     '変換定義を作成   moji = myRange   For L = 1 To cot    '照合開始してカナに置き換え     pot = Kensaku(moji)     While pot > 0       Select Case chgMode         Case 1: okikae = StrConv(Ka(L), vbKatakana + vbNarrow): okikaeTU = Chr(175)         Case 2: okikae = StrConv(Ka(L), vbKatakana + vbWide): okikaeTU = "ッ"         Case 3: okikae = StrConv(Ka(L), vbHiragana + vbWide): okikaeTU = "っ"       End Select       moji = Left(moji, pot - 1) & okikae & _           Right(moji, Len(moji) - (pot + Len(Ro(L)) - 1))       If pot > 1 Then         Select Case Mid(moji, pot - 1, 1)           Case "N", "n", "N", "n"           Case Else  'N以外で前の文字が同一子音なら『っ』にする             If StrConv(Mid(moji, pot - 1, 1), _               vbUpperCase + vbNarrow) = Left(Ro(L), 1) Then               Mid(moji, pot - 1, 1) = okikaeTU  '『っ』を調べる             End If         End Select       End If       pot = Kensaku(moji)  '次の検索     Wend   Next   fncRomaji_To_Kana = moji End Function Public Function Kensaku(mj As String)  'テーブルのローマ字があるか調べる   Dim p As Integer  '検索文字位置(ローマ字が大小文字、半角、かな、カナ、先頭大文字の組み合わせ)   p = InStr(mj, Ro(L))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbLowerCase))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbWide))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbLowerCase + vbWide))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbProperCase))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbLowerCase + vbProperCase))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbWide + vbProperCase))   If p = 0 Then p = InStr(mj, StrConv(Ro(L), vbLowerCase + vbWide + vbProperCase))   Kensaku = p End Function Public Sub HenkanSet() 'ローマ字とかなの対比テーブルを作る   Dim sDef As String  '変換定義用文字列   sDef = "きKY0しSY0しSH2ちTY0ちCY0にNY0ひHY0ふFY0みMY0りRY0"   sDef = sDef & "ぎGY0じZY0じJY0ぢDY0びBY0ぴPY0てTH0ちCH2でDH0じJ_2"     Call MakeTable1(sDef, "ゃぃゅぇょ")   sDef = "うWH3くWH0すSW0とTW0ふFW0ぐGW0どDW0つTS3ふHW0ふF_3"     Call MakeTable1(sDef, "ぁぃぅぇぉ")   sDef = "KかきくけこSさしすせそTたちつてとNなにぬねのHはひふへほ"   sDef = sDef & "MまみむめもYやいゆえよRらりるれろWわいうえをGがぎぐげご"   sDef = sDef & "ZざじずぜぞDだぢづでどBばびぶべぼPぱぴぷぺぽ_あいうえお"     Call MakeTable2(sDef)   cot = cot + 1: Ka(cot) = "ん": Ro(cot) = "NN"   cot = cot + 1: Ka(cot) = "ん": Ro(cot) = "N" End Sub   '『きゃ』や『くぁ』などの対比テーブルを作る。定義は4文字単位   Public Sub MakeTable1(iDef As String, Sokuon As String)     For L = 1 To Len(iDef) Step 4       elm = Mid(iDef, L, 4)       rm = Mid(elm, 2, 2): If Right(rm, 1) = "_" Then rm = Left(rm, 1)       kn = Left(elm, 1): ps = Val(Right(elm, 1))       For m = 1 To 5  'あ段からお段まで         cot = cot + 1: Ro(cot) = rm & Mid("AIUEO", m, 1)         Ka(cot) = kn         If m <> ps Then  'ゃぁなどを付ける           Ka(cot) = Ka(cot) & Mid(Sokuon, m, 1)         End If       Next     Next   End Sub   '『あ』や『が』などの対比テーブルを作る。定義は6文字単位   Public Sub MakeTable2(iDef As String)     For L = 1 To Len(iDef) Step 6       elm = Mid(iDef, L, 6)       rm = Left(elm, 1): If rm = "_" Then rm = ""       For m = 1 To 5  'あ段からお段まで         cot = cot + 1: Ro(cot) = rm & Mid("AIUEO", m, 1)         Ka(cot) = Mid(elm, m + 1, 1)       Next     Next   End Sub

kyon81
質問者

お礼

ありがとうございました。 大変お手数をおかけしました。 ちょっとがんばってみます!!

その他の回答 (3)

  • h_sakaki
  • ベストアンサー率18% (175/970)
回答No.3

範囲を指定して 編集→置換でやるしかないと思います 私の場合 例えばB列にフリガナがある場合B列をシート2にコピーして、シート2で置換した後、シート1の元の場所に再コピーします(これは値のみにします) 「あ~ん」まで約40位ですが力業でやっちぃます。

kyon81
質問者

お礼

ありがとうございました。 力技も必要かも・・・ お手数をおかけしました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>Excelのデータをアルファベット表示からカナ表記に変える方法 質問の意味が良くわからないんですが、  1.Aa→エー、Bb→ビー・・・、1→イチ・・・100→ヒャク こういうことでしょうか    ソートするとR(アール)などは最初にきてしまいますが・・・  2.ローマ字をカナに変える?数字は?    例)ROMU→ロム。  3.英単語をカナ(いわゆる日本語読み?)に変える?数字は?    例)ROM→ロム いずれにしても、関数で単純にはできないでしょう。 1なら置き換えでもできそうですが。(何か違ってそうですね) もう少し質問の詳しい内容と、どんなデータかが判明すれば何か方法があるかもしれません。(使用されているExcelのバージョンも) また、インポートしたデータらしいので、振り仮名情報が無いはずなのでエクセルで振り仮名を設定(Excel2000 VBA)して、振り仮名と元の文字でソートすれば違った結果になるかもしれません。

kyon81
質問者

お礼

ありがとうございました! 質問の内容が的を得なくてすみませんでした。 がんばってみます!

kyon81
質問者

補足

ありがとうございます。 2番です! やっぱり難しいですかね。

回答No.1

アルファベット表示というのは、 ローマ字で入力されているということでしょうか? 少なくともExcelではそのような関数はなかったはずです。 「ほかのアプリケーション」の方で対応出来ないとしたら、 フリーソフトでテキスト変換ソフトがありますので テキスト形式で保存して試してみてはいかがでしょう。

参考URL:
http://www.vector.co.jp/vpack/filearea/win/util/text/conv/index.html
kyon81
質問者

お礼

ありがとうございました。 URLとっても参考になりました!

kyon81
質問者

補足

ありがとうございます。 住所録のデータをエクセルにインポートしたのですが、一部の読み仮名のデータがローマ字で表記されてしまったのです。他のデータともあわせて使いたいため、50音で並べ替えをしようと思ったときに、アルファベット順で並ぶものとあいうえお順で並ぶものとで分かれてしまいます。 全てのデータを50音で並べ変えたいため、ローマ字を仮名に変えたいとおもったのです。 説明が上手じゃなくてすみません!

関連するQ&A

  • かなで書かれた文字をアルファベットに変換できませんか?

    エクセルででも、なんででもいいのですが、かなで書かれた文字をアルファベットに一度に変換できないでしょうか? たとえば、エクセルの関数phonetic を使えば、漢字を仮名に変換できますよね? それと同じように、仮名をアルファベットに変換する方法はないでしょうか? もし、そんな便利なことができたら、とってもうれしいのですが。。 よろしくお願いいたします。m(__)m

  • 半角カナを全角カナに変換したい

    表題の通りです。 先輩から引き継いだエクセルのデータが、全角カナと半角カナとの両方を、使い分けなどではなく使用しているものだったので、半角カナを全部、全角カナに変換したいと考えています。 置換機能で50音全部を置換するのは大変ですので、一度に変換する良い方法があれば教えてください。 また、全角アルファベットを、普通の英字(半角アルファベット?)にも変換したいと思っています。

  • 【Excel・並べ替え】かな、アルファベット、数字などの順序

    「Excel」においての「並べ替え」で、文字における昇順、降順をしたときの順序には決まりがあるのでしょうか? また、数字、アルファベット、かな、カタカナ、漢字が一列に混在している列を昇順にしたところ、この順序で並べ替えられていましたが、漢字のあとにさらにカタカナが並べられていました。これはなぜなのでしょうか? また、あるリストをあいうえお順にしたいのですが、上のようにいろいろな文字種類が混在していますと、区分されてしまいますが、あいうえお順にしたい場合にはどうすればよいのでしょうか?その語彙のかな表記を隣の列に足して、それらも並べ替えの枠組みに入れてに実行する…しかないのでしょうか?

  • Excelでのソートの方法

    Excelでソートをしたいのですが、並べ替えの方法が分りません。氏名をあいうえお順に並べ替える方法を教えて下さい。住所や電話番号が空欄になっている場所があると並べ替えられないのでしょうか?

  • EXCEL(csv)で全角カナを半角カナに一括変換できないでしょうか

    ある年賀状ソフトに入力してあるデータを 別の顧客管理ソフトにCSVでインポートとしようとしております。 しかし年賀状ソフト側は氏名のふりがなが全角カナで入っており (氏名を入力するとそのままふりがな欄に入力される) 顧客管理側はふりがなが半角カナ管理のためインポートでエラーになってしまいます。 EXCEL(csv)にて全角カナを半角カナに一括変換するような方法をどなたかご存じないでしょうか。 お知恵を拝借できれば助かります。

  • エクセル 半角カナを全角に、半角英数はそのままに

    エクセル2010で、データの表記を半角カナだけを全角にし、半角英数はそのままにしたいのですが、下記の方法No.2では上限にかかり使用が出来ませんでした。 http://okwave.jp/qa/q5985323.html どなたか良い関数を教えてください。

  • EXCELでPHONETICカナ変換で「ゑ」

    EXCELの関数、PHONETICを使って、漢字のフリガナを出してみたのですが、 「ゑ」の文字のカナが「ヱ」(全角)で表示されてしまいました。 ざっと見たところ、他の文字はちゃんと入力した漢字の読みが表示 されているのですが、なんで「ゑ」だけは「エ」(半角)でなく、しかも「エ」(全角)ではなく、旧字?の「ヱ」なのでしょうか? もしかしてウィルスかなにか?と思ったり、バグ?と思ったり。 誰か直し方を知っている人がいたら、教えていただきたいのですが。 宜しくお願いします。

  • Excelで半角カナのみを全角に変換したい

    EXCELで、半角カナのみを全角に変換する方法はありますか? JISという関数がありますが、これは英数まで全角に変換されてしまいます。

  • エクセルの並び替えで日本語を先にしたい

    エクセルの並べ替えで質問です。 バージョンは2003です。 同じ列に日本語と英数字とが入力されているセルが多数あり、 それをあいうえお順に並べ替えたいと思っています。 エクセルの並べ替えでソートすると、 どうしても英数字が先に表示され、 その後に日本語のセルが表示されてしまいます。 並べ替えで日本語を先に表示して、 次に英数字と並べ替えたいのですが、 良い方法はないでしょうか? よろしくお願いします。

  • Excel 並べ替え順序

    数字、アルファベット、カタカナ、ひらがな、漢字 それらの大文字小文字 昇順の並べ替えは 日本語は、あいうえお順、数字は小さい方から大きい方へ アルファベットは、aからzへとそれぞれは判るのですが 数字、アルファベット、カタカナ、ひらがな、漢字 それらの大文字小文字がまじりあった時の昇順並べ替えの 順序は決まっていますか

専門家に質問してみよう