• ベストアンサー

Excelの置換について

Excelにおいて、全角英数字で入力されている文字列を一括して半角英数字に変えたいのですが、どうすればいいのでしょうか?

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

  • ベストアンサー
回答No.4

遅くなりました。修正サンプルマクロを作ってみました。以下のように操作してみて下さい。 1.新規ブックを開き、ALT+F11を押してVBE(Visual Basic Editor)画面を表示させる。 2.VBE画面左上にあるVBAProjectと書かれている下のSheet1にマウスをあわせ、ダブルクリックする。 3.下記のコードをVBE画面右の白い部分にコピー・ペーストする。 Private Sub CommandButton1_Click() Dim myStr As String Dim myRange As Range myStr = Range("A1").CurrentRegion.SpecialCells(xlCellTypeLastCell).Address For Each myRange In Range("A1:" & myStr) myStr = Left(myRange.Value, 1) Select Case myStr Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" myRange.Value = StrConv(myRange.Value, vbNarrow) Case "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" myRange.Value = StrConv(myRange.Value, vbNarrow) Case "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z " myRange.Value = StrConv(myRange.Value, vbNarrow) End Select Next End Sub 4.ALT+F11を押し、Sheet1を表示させる。 5.メニューバーの中にある表示→ツールバー→コントロールツールボックスを順にクリック。 6.ダイアログボックスの一番右の上から2番目にコマンドボタンがあるのでそれをクリック 7.シートの適当な位置をクリックするとコマンド場短が貼り付けられる。 8.ダイアログボックスの一番左上にある三角定規のマークをクリックする。 この状態で、コマンドボタンをクリックしてみて下さい。カタカナとひらがな以外の文字が半角に変換されると思います。 不都合な点がありましたら、またお知らせ下さい。

noname#192965
質問者

お礼

何度もすいませんでした。 とても参考になりました。 ありがとうございました。

その他の回答 (3)

回答No.3

置換じゃないのですが、 関数をつかって半角英数に直したものを張り付ける というのはどうでしょう。 =ASC(文字列) これで半角になります。 後はコピーして値のみ貼り付けして終わりです。

noname#192965
質問者

お礼

参考になります。ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

(操作) 編集-置換で「検索する文字列」に複数文字指定が出来れば良いが、出来ないと思う。 (関数) 全セルを対象に式を設定する必要が出てくるが不可能。 自分自身のセル値を使って、変換し自分のセルに戻すことは 出来ない。元の式が崩れる。 (VBA)既に#1でご解答がありますが、VBAらしく、短く考えました。「置換」のマクロの記録を改造。 Sub test01() z = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" For i = 1 To 26 Cells.Replace What:=Mid(z, i, 1), Replacement:=Chr(96 + i), LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False Next i '---- z = "0123456789" For i = 1 To 10 Cells.Replace What:=Mid(z, i, 1), Replacement:=Chr(47 + i), LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False Next i End Sub (OKWEBで強制改行される行がありますが元に戻してください。元は13行です。)

noname#192965
質問者

お礼

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

回答No.1

はじめまして。次の様に操作してみて下さい。 1.新規ブックを開き、ALT+F11を押してVBE(Visual Basic Editor)画面を表示させる。 2.VBE画面左上にあるVBAProjectと書かれている下のSheet1にマウスをあわせ、ダブルクリックする。 3.下記のコードをVBE画面右の白い部分にコピー・ペーストする。 Private Sub CommandButton1_Click() Dim myColumn As Integer Dim myRow As Long Dim i As Integer Dim j As Long myColumn = Cells(1, Columns.Count).End(xlToLeft).Column myRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To myColumn For j = 1 To myRow Cells(j, i).Value = StrConv(Cells(j, i).Value, vbNarrow) Next j Next i End Sub 4.ALT+F11を押し、Sheet1を表示させる。 5.メニューバーの中にある表示→ツールバー→コントロールツールボックスを順にクリック。 6.ダイアログボックスの一番右の上から2番目にコマンドボタンがあるのでそれをクリック 7.シートの適当な位置をクリックするとコマンド場短が貼り付けられる。 8.ダイアログボックスの一番左上にある三角定規のマークをクリックする。 この状態で、コマンドボタンをクリックしてみて下さい。半角に変換されると思います。 セルに適当にデータを入力してみて下さい。すべて半角で表示されるはすです。 何か解らないことがありましたら、遠慮なくお知らせ下さい。

noname#192965
質問者

補足

ご回答ありがとうございます。 とても役に立ちます。 しかし、やってみて気づいたのですが、全角カタカナまで半角になってしまいました。 これは変えたくないですが、できますか?

関連するQ&A

専門家に質問してみよう