• ベストアンサー

EXCELで英字を全角→半角にしたい。

EXCEL2000を使用しています。 1.企業データが1万件入ったデータがあります。 2.企業名に含まれる英字を全角→半角にしたいのですが、できますでしょうか? 3.通常ですと=JIS(セル番地)で問題ないのですが、 カタカナや数字は全角のままで、英字だけ半角にしたいのです。 例) NTTドコモ株式会社→NTTドコモ株式会社 SONYミュージック123株式会社→SONYミュージック123株式会社 ご回答の程、よろしくお願い致します。

  • nene99
  • お礼率78% (152/194)

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

  • ベストアンサー
  • salf
  • ベストアンサー率42% (27/64)
回答No.2

面白そうだったんで、似たような事例を元にやってみました。 中身としては、単純に「A~Z」を一文字づつ「A~Z」へ変更しているだけです。多分もっと早い方法はあるんだろうな~ Sub WEB用文字変換() Dim SH As Worksheet Application.ScreenUpdating = False For Each SH In ActiveWorkbook.Sheets Call ConvStrCase(SH.Name) Next SH Application.ScreenUpdating = True MsgBox "Complete", vbInformation End Sub Private Sub ConvStrCase(strSheetName As String) Dim Num As String Dim Alb As String Dim ConvTbl As String Dim TargetArea As Range Dim TargetChar As String '半角化対象文字 ConvTbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" '置換範囲 Set TargetArea = Sheets(strSheetName).UsedRange '置換 For i = 1 To Len(ConvTbl) TargetChar = Mid$(ConvTbl, i, 1) TargetArea.Replace _ What:=TargetChar, _ Replacement:=StrConv(TargetChar, vbNarrow), _ LookAt:=xlPart, _ MatchCase:=False Next i Set TargetArea = Nothing End Sub

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1530399
nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 おかげさまで、概ねできました。 またよろしくお願いいたします。

nene99
質問者

補足

早速にご回答頂き、どうもありがとうございます。 1.問題なく全角→半角になり、コンプリートになりました。ありがとうございました。 2.一つお聞きしたいのですが、ワークシート全体を対象とするのではなく、範囲を指定することは出来ますでしょうか? 3.企業の住所やコンタクト情報等々、企業データが入っている為、Sheet1のB列に企業名が入っています。この部分を指定して、変換したいと思いますがいかがでしょうか? お忙しいところ恐縮ですが、ご回答頂ければ幸いです。 よろしくお願い致します。

その他の回答 (7)

  • pankun
  • ベストアンサー率57% (52/90)
回答No.8

下記のサイトは参考になりますか? 自分は、EXCEL2000を持っていないので確認とれていません。 お試しください。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;879878
nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 みなさまに、いろいろな情報をご提供いただき、感謝です。 おかげさまで、出来上がりました。 また、よろしくお願いいたします。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.7

ん? #6ですが、指定範囲内の英字のみ半角化したい場合は、#6のコードの ActiveSheet.UsedRange を   ↓ Selection に変更します。 (一ヵ所のみ)

nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 みなさまに、いろいろなVBAをご提供いただき、感謝です。 おかげさまで、出来上がりました。 また、よろしくお願いいたします。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.6

高速に動作する(と思います。多分) Sub 英字のみ半角化()   Application.ScreenUpdating = False   Dim a As Range, v() As Variant, r&, c&   For Each a In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues).Areas     With a       If .Count = 1 Then         ReDim v(1 To 1, 1 To 1)         v(1, 1) = .Value       Else         v = .Value       End If       For r& = 1 To UBound(v, 1)         For c& = 1 To UBound(v, 2)           v(r&, c&) = 半角$(v(r&, c&))         Next       Next       .Value = v     End With   Next   Application.ScreenUpdating = True   MsgBox "正常に終了しました。", , "英字のみ半角化" End Sub Private Function 半角$(ByVal s$)   Dim i%, c$   For i% = 1 To Len(s$)     c$ = Mid$(s$, i%, 1)     If c$ Like "[A-Za-z]" Then Mid(s$, i%, 1) = StrConv(c$, vbNarrow)   Next   半角$ = s$ End Function

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

こんにちは。KenKen_SP です。 処理の内容の割には仰々しく汚いソースですが、数万件のデータでも非常に 高速処理します。12万件のデータで5~7秒ぐらいです。 (WinXP 2.4GHz 512M Excel2002) コード中の以下の部分を変更すると、文字種変換の内容をカスタマイズでき ます。 1. .Pattern = "([A-z]+)" '<---全角アルファベット 2. vntParam = Replace(vntParam, M.Value, StrConv(M.Value, vbNarrow)) B列を選択して実行して下さい。 【以下ソースコード】 Option Explicit Private mRegExp As Object Public Sub ConvHalfChar_OnlyAlpha()      Dim rngArea  As Range   Dim rngCols  As Range   Dim rngTarget  As Range      Const VAL_TYPE = xlTextValues Or xlNumbers   Const COUNT_MAX = 65536      ' Selection の再定義   If Selection.Cells.Count > 1 Then     On Error Resume Next     Set rngTarget = Intersect(Selection, ActiveSheet.UsedRange)     Set rngTarget = rngTarget.SpecialCells(xlCellTypeConstants, VAL_TYPE)     If rngTarget Is Nothing Then Exit Sub     On Error GoTo 0   Else     Set rngTarget = Selection   End If      On Error GoTo ERROR_HANDLER   Application.ScreenUpdating = False      ' 選択ブロック毎に一括処理   For Each rngArea In rngTarget.Areas     ' メモリ不足にならない様にセル数が COUNT_MAX を超える     ' 場合は、さらに分割処理     If rngArea.Cells.Count > COUNT_MAX Then       For Each rngCols In rngArea.Columns         Call sp_BLOCK(rngCols)       Next rngCols     Else       Call sp_BLOCK(rngArea)     End If   Next rngArea    TERMINATE:   On Error GoTo 0   Set rngTarget = Nothing   Set rngCols = Nothing   Set rngArea = Nothing   Set mRegExp = Nothing   Exit Sub ERROR_HANDLER:   Application.ScreenUpdating = True   MsgBox "Error (" & Err.Number & ")" & vbLf _       & Err.Description, vbCritical   Resume TERMINATE End Sub ' 選択ブロックごとの処理 Private Sub sp_BLOCK(ByRef rngrngTarget As Range)   If rngrngTarget.Cells.Count > 1 Then     Dim Buffer As Variant     Dim lngRow As Long, lngCol As Long     Dim i   As Long, j   As Long     With rngrngTarget       Buffer = .Value       lngRow = UBound(Buffer)       lngCol = UBound(Buffer, 2)     End With     ' 値の加工     For i = 1 To lngRow: For j = 1 To lngCol       If Not IsEmpty(Buffer(i, j)) Then         Call sp_StrConv(Buffer(i, j))       End If     Next j: Next i     ' 一括で書き込む     rngrngTarget.Value = Buffer     Erase Buffer   Else     Call sp_StrConv(rngrngTarget)   End If    End Sub ' 要素ごとの処理 Private Sub sp_StrConv(ByRef vntParam As Variant)   Dim MC As Object ' MatchCollection   Dim M  As Object ' Match   If mRegExp Is Nothing Then Set mRegExp = CreateObject("VBScript.RegExp")   With mRegExp     .Pattern = "([A-z]+)" '<---全角アルファベット     .IgnoreCase = False     .Global = True     Set MC = .Execute(vntParam)   End With   If Not MC Is Nothing Then     For Each M In MC       ' 半角に変換       vntParam = Replace(vntParam, M.Value, StrConv(M.Value, vbNarrow))     Next M   End If   Set MC = Nothing: Set M = Nothing End Sub

nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 みなさまに、いろいろなVBAをご提供いただき、感謝です。 おかげさまで、出来上がりました。 また、よろしくお願いいたします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

ASC関数に代わり、アルファベット文字のみを半角にする関数です。 =AASC(セル番地) でご使用下さい Function AASC(ByVal Target As Range) As String Dim ptr As Integer, CnvChar As String, rng As Range Const TblChar As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" _ & "abcdefghijklmnopqrstuvwxyz" If Target.Cells.Count > 1 Then Set rng = Target.Cells(1, 1) Else Set rng = Target End If AASC = "" If rng <> "" Then AASC = rng For ptr = 1 To Len(TblChar) CnvChar = Mid(TblChar, ptr, 1) AASC = Replace(AASC, CnvChar, StrConv(CnvChar, vbNarrow)) Next ptr End If End Function

nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 みなさまに、いろいろなVBAをご提供いただき、感謝です。 おかげさまで、出来上がりました。 また、よろしくお願いいたします。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> Sheet1のB列に企業名が入っています。この部分を指定して、変換したいと思いますがいかがでしょうか? ではNo2さんのコードをお借りして・・・。 Sub ConvStrCase() Dim ConvTbl As String Dim TargetArea As Range Dim TargetChar As String Dim i As Integer ConvTbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" '半角化対象文字 Set TargetArea = Sheets("Sheet1").Columns(2) '置換範囲 For i = 1 To Len(ConvTbl) '置換 TargetChar = Mid$(ConvTbl, i, 1) TargetArea.Replace _ What:=TargetChar, _ Replacement:=StrConv(TargetChar, vbNarrow), _ LookAt:=xlPart, _ MatchCase:=False Next i Set TargetArea = Nothing End Sub

nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 みなさまに、いろいろなVBAをご提供いただき、感謝です。 おかげさまで、出来上がりました。 また、よろしくお願いいたします。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

関数では、一寸手に余りますね。 VBAを使えば出来ますが、プログラムを組む事が出来ないようでしたら、 置換を使って、A~Z迄、26回ほど順番に行う手も有ります。 データの量が多いので、その方が早いかも知れません。 ちなみに、=JISは、全角へ変換です、=ASCが半角変換です

nene99
質問者

お礼

早速にご回答いただき、どうもありがとうございました。 >ちなみに、=JISは、全角へ変換です、=ASCが半角変換です そうでした。(苦笑)ありがとうございました。

関連するQ&A

  • 文章の半角、全角の選択について

    ワード、E-mailなどで文章を作成するときに、カタカナ、英字、数字などが当然でてきますよね。 漢字、ひらがなは当然、全角文字になるのですが、カタカナや英字、数字などは皆さん半角にしていますか?それとも全角にしていますか? 私は基本的にカタカナは全角(何かの本でカタカナは全角が基本うんぬん書いてあったかすかな記憶による)、英字、数字は半角にしています。 文字表記の半角、全角の選択の何か明確な選択理由はあるのですか? 皆さんはどういう理由で全角、半角を使い分けていますか?

  • エクセルでひらがな・漢字はそのままでカタカナを全角・英数字を半角にする方法

    エクセル2000を使っています。 会社で住所録作成を引き継ぎましたが、 一つのセルにひらがな、漢字、カタカナ、英数字 が半角・全角ごちゃ混ぜで入っているので 管理がしづらくて困っています。 例えば、 あいうアジアNET株式会社 株式会社ABC123 などなど・・・・ ひらがな・漢字はそのままで、 カタカナを全角、英数字を半角にする方法は ありませんか? 最初にASC関数を使ってみたらカタカナも半角になり、 Phonetic関数を使うと、 カタカナだけ全角になりましたが、 ひらがなまでカタカナになり・・・ JIS関数も試しましたが今度は英数字まで全角になり、 どうしたものかと困っております。 よろしくお願いします。

  • 半角英字が入力できない

    突然、半角英字が入力できなくなりました。 いつもは「半角・全角・漢字」の ボタンを押すと半角英字・ひらがな と変換が切り替わっていたのに 今はひらがなは打てますが半角英字を打とうとすると 半角カタカナになります。 しかも、今も文章を打っているとき、いつもは半角小文字のローマ字からひらがなが形成されていましたが、今は大文字英字からひらがなが形成されているんです。 わかりづらくてすみませんが 教えていただきませんか? ちなみにテキストサービス入力の設定のところでいろいろ見てみましたがわかりません。 よろしくお願いいたします。

  • エクセル 関数で全角カタカナを半角にしたい

    エクセル初心者です。人からもらったデータなのですが、住所の記載でカタカナの部分に半角と全角が混ざってしまっています。漢字・ひらがなはすべて全角、カタカナ・数字は半角に統一したいのですが、関数でできますか? 良い方法を教えてください。

  • 文書での全角・半角の使い分けの基準について

    業務で利用している資料やドキュメントの作成時に、 これらのフォントや全角・半角を統一したいのです。 文書によりまちまちなので、 とても読みづらいと感じています。 できれば、カタカナを全て全角、アルファベットや 数字は全て半角にしたいと考えています。 (仕様上、全角・半角で表記する必要のあるものなどは 変える必要はないと思いますが・・・) そこで、皆様の職場では、どのようにされているか 教えて頂きたいと思います。 1) カタカナの全角・半角 2) 英字(アルファベット)の全角・半角 3) 数字の全角・半角 4) フォントの種類について (Arial、MS Pゴシックなど) これらをどのように使い分けていますか? また、統一されたりしていますか? 宜しくお願い致します。

  • カタカナのみを半角から全角に変換したいのですが

    VBAについて教えてください。 文字をHPにアップできるように、カタカナのみを半角から全角に変換したいのですが 何か良い方法はありますか? 文字は英字・ひらがな・カタカナ・漢字がランダムに入っています。 例えば Sub test() Dim a As String a = "aaaアアア<>BBB" End Sub の状態で。「アアア」のみを全角にするにはどうすればいいでしょうか? アルファベットは半角のままにしたいです。

  • デフォルトで英字は半角入力したい

    かれこれ何年もWindowsを使っているものですが、最近くだらない事で 悩んでいます。(汗) 私は日ごろから英数字は半角で入力をしております。 ですから普段はテンキーで数字を入力して、その後連続で英字を入力しま すと半角の英字が入力されます。 しかし会社で誰かが私のPCを使用したときに全角の英文字を入力した らしく、それ以来英字を入力するたび全角が表示されてしまいます。 前までは(例えば)”0001AAA”と、数字の入力後は必ず半角英字だったの ですが、今では”0001AAA”と全角になってしまいます。 単にF10を押して、半角に変換すればよいのですが、今まで変換もせずに ただEnterを押していただけなので、すごくイラつきます。 Windowsを起動後に、エディターなどで一度F10で全角を半角に変換する と、それ以降の入力は、従来私が行ってきた入力方式に戻るのですが、 再びPCを立ち上げなおすと、やはり全角が表示されます。 IME2000のプロパティなどを見ていても、英字は全角/半角を切り替える 設定は見当たらないので、どう直せばよいやらです。。。 くだらない質問ですが、おわかりになる方いますでしょうか? よろしくお願いします。

  • excelで数字を全角から半角にしたい

    excelでA1からZ400までデータがあります。漢字やひらがな、カタカナ、数字、アルファベットなどがたくさんあります。数字が全角と半角がごちゃ混ぜ状態です。どうにかして数字を半角で統一できないでしょうか?具体的には「東1」「東1」がごっちゃになってますので、数字が半角の「東1」に統一したいです。よろしくお願いします。

  • 半角カタカナを全角カタカナに変換したい

    Windows2000/Microsoft Excel2000です。 入力されている文字列のカタカナが半角になっているのを 全角に一括変換する数式はありますでしょうか? 英数字は半角のまま残したいのですが。 JISを使うと英数字も全角になってしまいます。 ヘルプいただけると大変助かります。

  • EXCEL 「ASC」関数  英数字の全角を半角に変換するよい方法があれば教えてください

    EXCELで入力しているデータをフィルターを使用して検索できる データベースにしたいのですが、以前からの入力しているデータの英数字が全角、半角が混在していてます。 フィルター検索の際に全角で入力すると半角入力のものがヒットしないので不便で、英数字の半角統一にしたいと考えています。 ASC関数を使用して英数字の全角→半角を行なうこと考えたのですが ASC関数ですとカタカタも半角カタカナに変換されるので 英数字だけを全角→半角にする関数や方法などあれば教えてください。 入力データは 漢字、ひらがな、カタカナ、英数字が混在しています。 希望 全角→漢字、ひらがな、カタカナ 半角→英数字 宜しくお願い致します。

専門家に質問してみよう