• ベストアンサー

エクセルで英数字を半角にするマクロ

すでにデータが入力されたエクセルで、全角の英数字を半角にするマクロを探しています。 条件があり、なかなか合う物がなく、質問させて頂きました。 条件は ・アルファベット→半角 ・数字→半角 ・カタカナ→全角 ・伸ばし棒(例えば「データ」の「ー」)→全角 ・同一セルに上書きで変換 下の2点はできたら半角になると嬉しいです。 ・ナカグロ→半角 ・<>→半角 よろしくお願い致します。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

・<>→半角 となっているだけで「=」に関しては何も触れられていないという事は、「=」に関しては、全角文字を半角文字に変換したり、逆に、半角文字を全角文字に変換したりしない方が良いものと考えて宜しいのでしょうか?  又、 ・カタカナ→全角 ・伸ばし棒(例えば「データ」の「ー」)→全角 という事は、もし、半角文字のカタカナや、半角の長音記号があった場合には、それらは全て全角文字に変換しなければならないという事なのでしょうか?  又、 >すでにデータが入力されたエクセルで、 とあるだけで、どのセル、或いはセル範囲に入力されているデータを変換すれば良いのかという事が何も説明されておりませんので、マクロを起動させる前に選択されていたセル範囲内のセルに入力されているデータを、置換を行う対象とするものと考えれば宜しいのでしょうか?  その場合、次の様なVBAのマクロにされると良いと思います。 Sub Macro() Dim i, j, k(6, 1) As Integer k(0, 0) = 32380: k(0, 1) = 32381 k(1, 0) = 32168: k(1, 1) = 32177 k(2, 0) = 32135: k(2, 1) = 32160 k(3, 0) = 32102: k(3, 1) = 32127 k(4, 0) = 32443: k(4, 1) = k(4, 0) k(5, 0) = 31850: k(5, 1) = 31936 k(6, 0) = 32421: k(6, 1) = k(6, 0) For i = 0 To 6 For j = k(i, 0) To k(i, 1) Selection.Replace What:=StrConv(Chr(-j), 4 * (1 - (i > 4))), Replacement:=StrConv(Chr(-j), 8 / (1 - (i > 4))), MatchCase:=True Next j Next i End Sub

luvluna
質問者

お礼

ご回答ありがとうございます。 3点のご指摘ですが、「=」は無変換、「半角カタカナの長音記号」は全角、 「変換する範囲」は表示中のシートになります。 会社にて変換するセルを選択し上記のマクロを試したところ、条件を全てクリアできました! ありがとうございました! 大変助かりました!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 データはA列の1行目からあるとします。 シートモジュールです。 Sub Sample1() Dim i As Long, k As Long, str As String For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) str = Mid(Cells(i, "A"), k, 1) If str Like "[0-9 a-z A-Z ・ < >]" Then Cells(i, "A") = Replace(Cells(i, "A"), str, StrConv(str, vbNarrow)) Else Cells(i, "A") = Replace(Cells(i, "A"), str, StrConv(str, vbWide)) End If Next k Next i End Sub ※ 一文字ずつ舐めるように検索していますので、 そこそこ時間を要するかもしれません。m(_ _)m

luvluna
質問者

お礼

早々のご回答ありがとうございます。 会社にて試してみたのですが、なぜか反映されませんでした。 挿入から標準モジュールを出してそこへ貼り付けたのですが、 エクセルに疎いため、私の使い方が間違っていたのかもしれません>_< ご協力ありがとうございました。

関連するQ&A

  • Excelで全角英数字を半角英数字に変換

     こんばんは!  お世話になります。 Excel sheetの列(F・G・J・K・N・O・R・S・V・W・Z・AA)、行(4~33)に アルファベットを入力するし、35行目以降に(例)A=1・B=2と"COUNTIF"関数使用でカウントされる様になっています。 そこで、その関数の式に半角英数字で入力した為、半角英数字で入力したものしかカウントされません。 入力時の注意で、半角英数字での統一入力でお願いしたものの、やはり中には全角英数字で入力する方もいて、一つ全角入力があると全て信用出来なくなり、折角自動でカウントされるようにしていても全部見直していては自動にした意味がありません。  その為、関数 or マクロでも結構です。 入力した範囲を選択して、半角英数字”A”の場合はそのままで全角英数字”A”の場合半角”A”に上書きされるようなことは出来ますか?  知っている中で、関数”ASC”も全角を半角に変換できますが、入力したセルと別のセルに返すので、そうではなく、入力してあるセルに上書きしたいのです。  ご存知の方がいらっしゃいましたら、宜しくお願いします。 お手数ですが初心者の為、具体的に教えて頂けたら幸いです。 ”のものは半角英数字  

  • エクセルで英数字のみを半角にしたい。

    エクセル2000を使用しています。 1つのセルにカタカナと英数字が混在しています。 英数字のみを半角にすることはできるでしょうか。 「ASC関数」を使用したら、 カタカナも半角になってしまいました……。

  • エクセル 全角から半角に変換 マクロ

    エクセルでシートの上すべてのカタカナ、ひらがな、漢字、スペースを全角から半角に変換するマクロを教えてください。 アルファベットは残したいです。

  • エクセルについて

    エクセルで半角英数字と半角カナが混在したセルの半角カナのみ全角に変換したいのですが可能でしょうか。英数字は半角を維持したいです。 =JIS()でやるとどうもアルファベットや数字まで全角になってしまうようで…

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

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

  • Excel。英数字カタカナ混ぜこぜのセルで、カタカナのみ全角にする方法は?

    とっても基本的なことで困ってます。 Excelの1つのセルの中に、英数字カタカナがごちゃ混ぜのデータが入っています。英数字は全角の場合もあれば半角の場合もありです。片仮名もしかり。 そのデータを、英数字のみ半角にし、カタカナは全角に修正したいんです。 間違ってASC関数を使ったら、カタカナまで半角になっちゃった・・・・。 本日午後一のミーティングにそろえなきゃいけない資料なんです! 誰かーーー! 助けてーーーー!!

  • エクセルで英数のみを半角に変換するマクロ

    エクセル2003を使っています エクセルで英数のみを半角に変換するマクロの作り方を教えてください。 予め複数のセルを選択しておいて、それらに含まれる文字列の英数のみを半角に(カタカナは全角のまま)変換したいのです。 以前他のサイトで同様の機能のユーザー関数の作り方は見つけたのですが、マクロにする方法がわかりません。 よろしくお願いします。

  • Excelの半角英数字の入力について

    Excelで、あるセル、又は行全体に入力するときに半角、全角の入力にかかわらず、入力したものは必ず半角に変わるようにするにはどうすればいいでしょうか? また、漢字かつ英数字の混合文字列に対して、英数字だけは、全角で入力しても半角に変えてくれるようにするにはどうすればいいでしょうか?

  • Excelでカタカナや英数字の変換

    1つのセルの中に【漢字】と【全角カタカナ】と【全角英数字】が入力してあります。この【全角カタカナ】と【全角英数字】を、「範囲選択後F10キー」等ではなく簡単に手際よく半角に変換する方法はありますか?

  • Excel2010英数字のみ半角にする方法

    タイトルのほかにも条件があるのですが、Excel2010で、表示結果に条件があります。 既存に入力されているものなんですが、条件は以下の通りです。 条件1:漢字あるいは、ひらがなはそのまま 条件2:全角カタカナは全角カタカナ 条件3:半角カタカナは全角カタカナ 条件4:全角英数字は半角英数字 条件5:半角英数字は半角英数字 条件6:全角スペースは全角スペース 条件7:半角スペースは全角スペース 条件8:スペースが連続している場合は全角スペース1つのみ 例としては(左側が既存、右側が表示結果)、 全角あいうえお→全角あいうえお 全角アイウエオ→全角アイウエオ 半角アイウエオ→半角アイウエオ 全角110→全角110 半角アイウエオ全角110→半角アイウエオ全角110 半角アイウエオ□全角110→半角アイウエオ□全角110 半角アイウエオ□□全角110→半角アイウエオ□全角110 半角アイウエオ△□全角110→半角アイウエオ□全角110 半角アイウエオ△全角110→半角アイウエオ□全角110 半角アイウエオ△△全角110→半角アイウエオ□全角110 半角アイウエオ△△△全角110→半角アイウエオ□全角110 ※「□」は全角スペース、「△」は半角スペースです。分かりやすいように表記してみました。「□」または「△」が複数ある場合、スペースの個数です。 既存の入力されている列は「AE列」です。関数を入力できるのは「AR列」以降です。 関数について詳しくないため、あまり長いお礼はできませんが、回答よろしくお願いします。

専門家に質問してみよう