プロが教える店舗&オフィスのセキュリティ対策術

質問タイトルとおりですが。。。。

エクセルで名簿の名前に、半角カナ文字をふりたいのですが
データが1万件以上あるので、非常に手間がかかります。

もし、関数で変換できる方法がありましたら、ぜひご教授お願いします。

A 回答 (5件)

漢字の名前が正しい読みで入力できていれば・・・なんですが、



=ASC(PHONETIC(名前のセル番地))

で可能です。

この回答への補足

回答ありがとうございます。

やってみましたが、、、、漢字がそのまま表記されました。

質問がわるかったのかもしれません。

関数を入れるセルには「カタカナ」を表示させたいのです・・・。
もしわかればご教授ください。

補足日時:2006/09/28 15:27
    • good
    • 3

Excel2002の場合でお答えします。



そのものズバリ、「phonetic」という関数があります。
この関数は全角なら全角でフリガナを表示しますので、
半角のフリガナにするには「ASC」という関数と合体
(入れ子構造)します。
使い方としては、例えばA列に名前が入っていて、
B列にふりがなを表示させたい場合、
B1に「=ASC(PHONETIC(A1))」と入力します。

ただし、この関数は、「入力したときの変換前の読み」
を表示しますので、例えば「六本木」と書いてあっても・・・

「ろっぽんぎ」と入力→変換→「六本木」と確定
した場合は「ロッポンギ」と表示されますが、

「ろく」と入力→変換→「六」で確定
「もと」と入力→変換→「本」で確定
「き」と入力→変換→「木」で確定
した場合には、「ロクモトキ」と表示されます。

また、他のデータ(テキストやCSVなど)からインポート
したものは、ふりがな情報が入っていないことがあります。
その場合は、もとの漢字が表示されてしまいます。

こういった状態のデータが含まれる場合、50音順の並び替えがうまく出来ない、などのトラブルが発生するもとになりますので、ふりがな情報を編集してやる必要があります。

※ご存知かも知れませんが、ふりがな編集の方法↓
編集したいセルを選択した状態で、メニューバーの
「書式」→「ふりがな」→「編集」で編集できます。
ショートカットキーは、Alt+Shift+↑です。
    • good
    • 8

名前が入っているのがA列として、


(1)A列を選択し、書式メニュー→ふりがな→設定をクリック。
(2)半角カタカナを選択。OK.
(3)ふりがなを入れたいセルB1に=PHONETIC(A1)と入力。
(4)B1の数式をB列の他のセルにコピー。

半角カタカナでふりがなが出ます。
ふりがなが違うときは、A列(漢字の方)のセルを選択し、
書式メニュー→ふりがな→編集を選択し、手修正。
    • good
    • 1

VBAを使っていいなら


1. Alt+F11でVisualBasicEditorを起動
2. 「挿入」「標準モジュール」
3. 標準モジュール"Module1"内に下記の記述をコピー

Function KANA(MOJI)
KANA = StrConv(Application.GetPhonetic(MOJI), vbNarrow)
End Function

4. VisualBasicEditorを閉じる。
5. 漢字名のセルの隣で =KANA(漢字名のセル座標) として表示確認
6. 上記のセルをコピーして「形式を選択して貼り付け」で値として貼り付ける。
    • good
    • 8

こんばんは。



#1 さんの
>=ASC(PHONETIC(名前のセル番地))

で取れないのだから、一つずつセルから、ふりがなデータをAlt + Shift + ↑で呼び出すか、#4 さんのような、VBA を使って行うしかないと思います。

ただ、#4 さんで行った場合は、1万件などとなると、後で、説明にあるように、コピー、値-貼り付けで定数化しないと、シートが重くなってしまいます。そこで、最初から定数化させるマクロを掲示しておきます。こちらは、おまけですから、別に、先の方で解決するようでしたら、これは試す必要はありません。


'標準モジュールが良い
'-----------------------------

'標準モジュールが良い
Sub FuriganaMarco()
 Dim i As Long
 Dim iCol As Integer
 Const ACOL As String = "B" 'どこの列に出力?
 Application.ScreenUpdating = False
 
 With Range("A1:A10000")  '範囲は?
 
  iCol = Columns(ACOL).Column
  For i = 1 To .Rows.Count
   If .Cells(i, 1).Value <> "" And VarType(.Cells(i, 1)) = vbString Then
    Cells(i, iCol).Value = GetFurigana(.Cells(i, 1))
   End If
  Next i
 End With
 Application.ScreenUpdating = True
End Sub
Function GetFurigana(rng As Range)
'If IsEmpty(rng) Then Exit Function
'単独で使う時には、上記のコメントブロックを外す
If rng.Phonetic.Text = rng.Value Then
  If Application.GetPhonetic(rng) <> "" Then
   GetFurigana = StrConv(Application.GetPhonetic(rng), vbNarrow)
  Else
   GetFurigana = rng.Value
  End If
Else
  GetFurigana = StrConv(WorksheetFunction.Phonetic(rng), vbNarrow)
End If
End Function

'-----------------------------

なお、これは、IMEの変換の記憶によって出されるものですから、MS-IMEがあるということが条件であることと、IMEの変換順序の第一番目以外のものに対しては、このようなマクロでは出てきません。また、一部の漢字の中には、ふりがなを持たないものがあったと思います。それには対応できません。
    • good
    • 1

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

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


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