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

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変お手数をおかけしました。

ちょっとがんばってみます!!

お礼日時:2001/12/18 08:48

範囲を指定して 編集→置換でやるしかないと思います



私の場合 例えばB列にフリガナがある場合B列をシート2にコピーして、シート2で置換した後、シート1の元の場所に再コピーします(これは値のみにします)

「あ~ん」まで約40位ですが力業でやっちぃます。
    • good
    • 0
この回答へのお礼

ありがとうございました。
力技も必要かも・・・

お手数をおかけしました。

お礼日時:2001/12/18 08:49

>Excelのデータをアルファベット表示からカナ表記に変える方法



質問の意味が良くわからないんですが、

 1.Aa→エー、Bb→ビー・・・、1→イチ・・・100→ヒャク こういうことでしょうか
   ソートするとR(アール)などは最初にきてしまいますが・・・

 2.ローマ字をカナに変える?数字は?
   例)ROMU→ロム。

 3.英単語をカナ(いわゆる日本語読み?)に変える?数字は?
   例)ROM→ロム

いずれにしても、関数で単純にはできないでしょう。
1なら置き換えでもできそうですが。(何か違ってそうですね)

もう少し質問の詳しい内容と、どんなデータかが判明すれば何か方法があるかもしれません。(使用されているExcelのバージョンも)

また、インポートしたデータらしいので、振り仮名情報が無いはずなのでエクセルで振り仮名を設定(Excel2000 VBA)して、振り仮名と元の文字でソートすれば違った結果になるかもしれません。

この回答への補足

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

補足日時:2001/12/03 21:00
    • good
    • 0
この回答へのお礼

ありがとうございました!

質問の内容が的を得なくてすみませんでした。
がんばってみます!

お礼日時:2001/12/18 08:51

アルファベット表示というのは、


ローマ字で入力されているということでしょうか?
少なくともExcelではそのような関数はなかったはずです。

「ほかのアプリケーション」の方で対応出来ないとしたら、
フリーソフトでテキスト変換ソフトがありますので
テキスト形式で保存して試してみてはいかがでしょう。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/ …

この回答への補足

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

補足日時:2001/12/03 20:55
    • good
    • 0
この回答へのお礼

ありがとうございました。

URLとっても参考になりました!

お礼日時:2001/12/18 08:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qエクセルに入力した住所録をあいうえお順、メールアドレスをabc順に並び替えたいのですが。

エクセルに入力した住所録をあいうえお順、メールアドレスをabc順に並び替えたいのですが。どのようにすればよいのでしょうか?
検索したのですが、見つけることができませんでした。もしも、今までにすでに質問がでていましたらそのページのアドレスをお教えください。
また、エクセル・ワードなどを基本から学べるサイトをご存知の方がいましたらお教えください。

よろしくお願いいたします。

Aベストアンサー

並べ替えたいデータをアクティブにしてから
1.データ→並べ替えを選択します。

2.最優先されるキーの部分に名前が入っている列を指定してやります。

3.昇順がクリックされていることを確認します。

4.範囲の先頭行がデータになっていることを確認します。

5.OKを押します・・・・・すると出来ているはずです。

出来たでしょうか・・・。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qエクセルで名簿をあいうえお順に並べ替える方法。

タイトル通りなのですが、エクセルで名簿をあいうえお順に並べ替える方法を教えて下さい。
きっと単純な事なのでしょうが、分からなくて困ってます。
宜しくお願いします。

Aベストアンサー

 名簿の氏名をキーにして50音順に並べたいということだと思いますが、残念ながらフリガナが入力されてなければ漢字の氏名だけで正しい並べ替えは出来ません。
 
 いくらExcelのバージョンが新しくても漢字には音読みと訓読みがあり、漢字でソートするとほとんど音読みで並べます。
 だから例えば安永は「あんえい」に吉田は「きちでん」と読んで並べます。日本名の大半は訓読みですから期待する結果はほとんど得られません。

 ただし一つだけ試して欲しいのは、氏名の列の右にとりあえず1列挿入し、仮に氏名セルのトップがA2だとするとB2に次の式を入力して下方にコピーしてみてください。
=PHONETIC(A2)
 もし氏名を入力するとき読みどおり入力してあればその読みがB2に出るはずです。
 ダメもとでやってみる価値はあると思います。
 駄目なときはフリガナを入力してソートするしかないでしょうね。

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qエクセルで、アルファベット順に並べ替える方法

エクセルで、ヤフオクの売上表を作っています。


     A列   B列  C列
1行  【商品名】【金額】【ID名】
      ・    ・   ・
      ・    ・   ・

作表前のデータがこのように並んでいます。同じ人(ID名)が複数落札している場合もあるのですが、この段階ではバラバラです。これを、ID名ごとに整理したいのですが、単純に、C列をアルファベット順に並べても、商品名・金額がくっついてこないと、誰がどれを落札したか、もうわかりません!!(一回失敗して、めんどくさい事になって以来、手作業でせっせとやっています)

このような条件付で並べ替える方法って、ありませんでしたでしょうか?

Aベストアンサー

>C列をアルファベット順に並べても、商品名・金額がくっついてこないと、誰がどれを落札したか、もうわかりません

とありますが、C列「だけ」を並べ替えてしまったんでしょうか?
A列からC列までデータが入っているのであれば、A列からC列までを選択した状態で「データ」→「並べ替え」を選び、「最優先されるキー」を「列C」とし、1行目にタイトルが入っているなら「データ範囲の先頭行」の「タイトル行」にチェックしてから「OK」としてみてください。
A列、B列も一緒に並び替わるはずです。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qエクセル あいうえお順に並べ替えしたいのですが。。

はじめまして。

今、エクセルで下記のような顧客名簿を作成しています。

A列:日付
B列:氏名
C列:住所
D列:マンション名
E列:電話番号

氏名であいうえお順に並べ替えしたいのですが
うまくいきません(ToT)

いつもの通りに『並べ替えしたい範囲を選択→データ→並べ替え
→最優先されるキーB列選択→OK』
とやってみたのですが、あいうえお順でもなくバラバラなんです。。
かといって住所順になっているわけでもないし。。

どなたかお分かりになる方いらっしゃいましたら
アドバイスお願い致します!!!

Aベストアンサー

B列を選択して「書式」「ふりがな」「表示/非表示」を押して
"ふりがな"がルビ表示されるか確認してください。

ワードやテキスト文書からエクセルに文字をコピーした場合
ふりがなが空白になっている可能性が高いです。
再変換してふりがなを設定するか、「ふりがな」「編集」で直接ふりがな設定すれば
並べ替えで適用されます。

もっとも、設定しなければいけないセルが多いなら、ふりがなの列を設けて
そこに記入したほうが楽ですけど...

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセルでカタカナ、アルファベット、数字混同データの並び替え

B列にアルファベット、数字、カタカナのデータが混在していますが、
これを、カタカナ→アルファベット→数字の順で並び替えるには
どうしたらいいのでしょうか…
A列   B列   C列    A列   B列   C列

AA001 Eコン   10      AA001   クロ    20
AA001  クロ    20   →  AA001   Eコン   10
AA001  1    15      AA001   1    15

このようにしたいです。
データが更新されてもすぐに対応できるようにマクロで処理したいと考えています。
カタカナはすべて半角です。

Aベストアンサー

例えば、D列に、
カタカナ -> 2
アルファベット -> 1
数字 -> 0
になるような関数作っといて、D列を条件に並べ替えとか。

Function ValType(src As String) As Integer
 If IsNumeric(src) Then ' 数値なら0
  ValType = 0
 Else
  If Left(src, 1) Like "[A-Z]" Then ' 先頭文字が英字なら1
   ValType = 1
  Else
   ValType = 2
  End If
 End If
End Function

--
> データが更新されてもすぐに対応できるようにマクロで処理したいと考えています。

データの入力(更新)時に、勝手に並べ替えされたら困るのでは。
例えば、質問の例の左側3行目を、
AA001  1    15

AA001  シロ   45
って変更しようとしたら、シロを入力した時点で並べ替えが起こっちゃって、どこ入力してたかわからなくなるとか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング