- ベストアンサー
エクセル 全角から半角への変換
エクセルで作成した住所録(住所と電話番号)の数字が全角と半角がごちゃまぜになってしまっているので半角に全て変換をしたいので教えてください。お願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。No.2様の方式をあえて採用してみますとこんな風でしょうか。 Excel2000~2003でのやり方です。もしExcel2007をお持ちの方ですと以下の操作が 異なってしまいますのでその時はごめんなさい(VBAコード自体は有効だと思います)。 VBAを記述するには Excel のメニューより ツール → マクロ → Visual Basic Editor と選択します。そして「プロジェクト」ウインドウの Microsoft Excel Objects の所で 右クリック → 挿入 → 標準モジュール とします。コードのウインドウが開いたら下記のコードをコピペしてください。 '---------ここから------------- Function ZenToHan(strStr As String) As String ZenToHan = StrConv(strStr, vbNarrow) End Function Sub test() Dim strWk As String Dim rgWk As Range Dim rgArea As Range Set rgArea = Range("B5:C8") 'セル範囲を指定。左記の例はセルB5からC8の範囲 'という意味です。B列に住所、C列に電話番号のイメージ For Each rgWk In rgArea strWk = rgWk.Value rgWk.Value = ZenToHan(strWk) Next Set rgArea = Nothing End Sub '----------ここまで------------ この後一度ファイルを保存しておいてください。そしてExcelのメニューで ツール → マクロ → マクロ として、マクロ名:test を選んで実行します。 結果がおかしければファイルを保存せずに終了して、先ほど保存したファイルを読み込み なおしてください。 ちょっと煩雑かもしれませんが、VBAでやるならという参考まで...
その他の回答 (7)
- coroleone
- ベストアンサー率39% (9/23)
OpenOfficeのやりかたですが ・Ctrlキーを押しながら半角にしたいセルを選ぶ ・書式→文字種の変換→半角をクリック これで全て半角になります。 エクセルで試してないのでできなかったらすいません。
- D-JM
- ベストアンサー率16% (1/6)
数値だけを全角⇒半角ということでしたら、 cntl-A で全体を選択してから、ctrl-H(置換)で、置換元を 「0」、置換後を「0」で置換実行。 それを10回(0~9)繰り返せば完成です。 (やってみたら、案外てっとりばやいかと)
- imogasi
- ベストアンサー率27% (4737/17069)
ASC関数ではどうかな。カタカナも半角になるが、住所なら差し支えないだろう。 全角に統一はJIS関数。住所なら、全角に統一がよいのでは。 数字だけとなると関数では細工が要るし、VBAなども使う。
- toom2005
- ベストアンサー率0% (0/5)
一番簡単で早い方法をアドバイス 名前の入っている列を選択しCTRL+Hで検索と置換です。 変更前を 全角スペース 変換後を 半角スペース これですべて半角になります。 逆をすれば全角です。 式なども作るのは大変なので、 ただし、この作業は定期的に行わなくてはいけないので対策は関数をつくるか、姓名を分けて入力し、違うフィールドであわせるというのがいい方法かとおもいます。 合わせるのは=E13& " "&F13
- mu2011
- ベストアンサー率38% (1910/4994)
カナ、英文字も変換されますが次の方法で如何でしょうか。 仮に表は見出し行ありでA列の住所を空き列のE列、B列の電話番号をF列に変換します。 (1)E2に=ASC(A2)、F2に=ASC(B2)を入力、E2:F2を選択して下方向にコピー (2)変換された範囲をコピー→A2を選択→形式を選択して貼り付け→値にチェック→OK (3)E,F列を削除
VBAを使うのであれば StrConv("012345", vbWide) とやると"012345"となり StrConv("012345", vbNarrow ) とすると"012345"と出来ます。
補足
VBAとはどういったことなのでしょうか? 初心者なので詳しく教えて頂ければと思います。よろしくお願い致します。
カタカナは全角のままでとなると 作業列を使って処理することになり ます。A1セルにデータがあるとして ■B1セル =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( A1,"1",1),"2",2),"3",3),"4",4),"5",5) ■C1セル =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( B1,"6",6),"7",7),"8",8),"9",9),"0",0) それかユーザー定義関数を作るかですね。
お礼
すごいです! ご親切にありがとうございました。 また、何かありましたらよろしくお願いいたします。