• ベストアンサー

エクセル上で英数のみを半角するにはどうしたらいいでしょうか?

エクセル上で、英数のみを全角から半角にするソフトはあるでしょうか? 英数・カナ・記号・スペースまで一括に半角にするものや、英数でも日本文の中の英数1文字は半角にしないものなどは見つけることができたのですが、英数だけをすべて半角にするものは見つけられません。 何かいいものがありましたら教えてください。

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

  • ベストアンサー
  • mach999
  • ベストアンサー率75% (36/48)
回答No.3

こんなマクロでいけるかと思います。 Public Sub Convert()   Dim s As String   Dim c As String   Dim i As Integer   Dim cell As Range   If Not (TypeOf Selection Is Range) Then Exit Sub   For Each cell In Selection.Cells     s = cell.Value     For i = 1 To Len(s)       c = Mid(s, i, 1)       If IsWideAlphabet(c) Or IsWideNumber(c) Then         Mid(s, i, 1) = StrConv(c, vbNarrow)       End If     Next i     cell.Value = s   Next End Sub Private Function IsWideAlphabet(c As String) As Boolean   IsWideAlphabet = Asc("A") <= Asc(c) And Asc(c) <= Asc("Z") _             Or Asc("a") <= Asc(c) And Asc(c) <= Asc("z") End Function Private Function IsWideNumber(c As String) As Boolean   IsWideNumber = Asc("0") <= Asc(c) And Asc(c) <= Asc("9") End Function

momota
質問者

お礼

ありがとうございました。 私にもできました。 とても感激しております。 本当にありがとうございました。

その他の回答 (3)

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

#2のお礼に関して。 (1)私も少数例ですが、テストして確認済みで上げてます。 (2)A列に全角データがあり、C列に半角データをセットしてます。C列は意味ありません。B列はASC関数で使ってたので。 (3)英数は大文字・小文字、全角・半角が見て判別し難いとは思いますが。 (4)ロジックに付いては何度も使っているので (5)私の凡ミスがあるかも知れませんが、それも含めて 見つけて直して修正していただくことが出来ないと、使っていただくのはむりですかね。

momota
質問者

お礼

意味がわかりました。 私のエクセルには複数列入力したあったので、A列がC列にコピーされたわけですね。 A列だけ入力してみたら、C列にちゃんと半角が出ました。 素人なもので、理解できなくて申し訳ありませんでした。 詳しく説明してくださりありがとうございました。

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

ASC関数はカナも半角にするようです。 もしそれが都合悪ければ、英数だけなら、半角と全角が1対1対応なので(ぱのパのように1文字が2文字になることが無いので) 標準モジュールに貼りつけて実行して見てください。 Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d a = "1234567890abcdefghjiklmnopqrstuvwxyz" & _ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" b = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" For j = 1 To d t = "" For i = 1 To Len(Cells(j, "A")) 'A列の文字を変換 s = Mid(Cells(j, "A"), i, 1) For k = 1 To Len(a) If s = Mid(a, k, 1) Then t = t & Mid(b, k, 1) GoTo p02 Else End If Next k t = t & s p02: Next i Cells(j, "C") = t 'C列にセット Next j End Sub

momota
質問者

お礼

回答ありがとうございます。 私のやり方が悪いのか、なぜかA列がC列にコピーされるだけであとは変りません。 何がいけないのでしょうか?

  • heycha
  • ベストアンサー率20% (16/78)
回答No.1

ASC関数はダメですか?

momota
質問者

お礼

早速の回答ありがとうございます。 素人に近い方なので、ASC関数がどんなものかよくわらかないのですがこれはカナ・記号・スペースなども半角になりませんか?

関連するQ&A

専門家に質問してみよう