以下のように定義しています。, そのまま使うことができるエクセルブックをご用意しています。

VBA・エクセルで半角英数を全角に変換したりその逆を行う関数の使い方。JIS関数とASC関数を使用します。, エクセルのワークシート上で使用する場合はJIS関数を使用します。使い方はシンプルで、引数に文字列を指定すると、文字列に含まれる半角をすべて全角に変換してくれます。, 逆に、全角を半角に変換する場合はASC関数を使用します。JIS関数と同様で、引数に文字列を指定してやれば、文字列に含まれる全角をすべて半角に変換してくれます。, VBAで使用する際には「StrConv」という関数が使えます。StrConvには二つの引数を与えます。一つ目は変換する文字列。二つ目が変換のタイプを表す値です。この二つ目の引数に「半角を全角」あるいは「全角を半角」にするタイプの値があるので、下記のサンプルのように引数を与えてあげればOKです。ちなみに他の変換タイプとしては、ひらがなをカタカナにするものやその逆を行うものなどがあります。, なお、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。, エクセルVBAで使用するコードの備忘録。VBAでエクセルのウィンドウを最大化・最小化するコード。, エクセルVBAでよく使うコードの備忘録。文字列を改行する際に使用する改行コードについて。文字列を改行するのにつかわれるコードはいくつかあります。キャリッジリターン(CR)と呼ばれるものとラインフィード(LF)と呼ばれるもの、その両者の組み合わせが代表的なものです。以下ではそれぞれの挙動について簡単に説明します。, エクセルVBAで使うコードの備忘録。VBAでプログラムの実行時間を計測するコード。実行時間を計測・比較することにより、どの部分で処理に時間がかかっているのか可視化することが可能です。プログラムの高速化を検討する際にはとても便利な機能です。, エクセルVBAで使用するコードの備忘録。VBAで開いているウィンドウのサイズを変更するコード。コードが記載されているエクセルのワークブックだけでなく、他のワークブックのウィンドウサイズも変更可能です。, エクセルVBAで使うコードの備忘録。宣言されたプロシージャ内だけでなく、複数のプロシージャで使用できる変数(グローバル変数)や、複数のモジュール間で使用できる変数(パブリック変数)の使い分けについて。, エクセルVBAでよく使うコードの備忘録。ワークブックを保存する際にフォルダが存在しなければ自動で作成してその中にファイルを保存するコード。複数階層のフォルダを一括で作成するコードについても一緒に記載してあります。. Excel シートのテキストデータの全角・半角文字を変換・置換する手順と、それを自動化するマクロを検討します。, 日本語の文字コードには歴史的経緯のためか、英数字・記号・カタカナの文字に全角と半角の2種類の文字種があって区別されます。, 説明文などのテキストデータで全角・半角が統一されていないのは見苦しいだけでなく、文書の信頼性が問われます。, またデータとしても、システムによっては両者を区別しなかったり、どちらかに自動変換(正規化)されることもあるのですが、基本的に、全角と半角が混在していると何かとトラブルの元になりやすいです。, 半角カタカナは最近使われなくはなってきていますが、かつては印字スペースの節約のためにも使われ、今でもレシートや通帳の印字でよく使われています。, Excelで半角カタカナを使う理由は無いはずなのですが、古いシステムとの連携データ作成などでまだ需要は残っているようです。, Word には全角・半角を置換するコマンドがあるようですが、Excelでは提供されていません。, ASC()/JIS()は全ての英数字・記号・カタカナを変換し、それ以外の文字には影響しませんので、文章テキストをそのまま処理できます。, ただ、たとえばテキストデータ中にある英数字を半角に統一するために ASC() を使うと、文章中のカタカナまで半角カタカナになってしまいます。説明文のような自然文が主体のテキストデータでは、もう少し細やかな制御が欲しいところです。, また、関数を使った変換には作業用のセルをいったん用意し、数式データをやり取りすることになります。作業的に難しい事ではないのですが、ちょっと億劫です。, ここでは、少し無理やりですが、キー操作だけでASC()/JIS()関数処理を行う手順を考えます。, 慣れるにはちょっと無理があります。素直に作業用の別シートでコピー&ペーストしながら加工したほうが早そうです。, 変換したいテキストのセルを選択して、本マクロを実行するとセル内のテキストの文字種が変換されます。, 変換対象としたい文字種をある程度選べるように、変換パターンによって複数のマクロに分けました。, たとえば、「文字種変換_半角→全角」マクロはカタカナ、英数字、記号等をすべて半角文字にしますが、「文字種変換_全角英数→半角英数」マクロは英数字のみ半角に変換します。, 使用上の注意点として、本マクロは選択範囲のセルの全ての文字を変換処理しますが、元に戻すことができません。, 大切なデータを安全に扱うためには、いったん別シートにコピーしてから処理するか、ファイルをバックアップしておくなど、慎重に操作されることをお勧めします。, Excel のテキスト置換コマンドに全角・半角の文字種を変換する機能がなく、ASC()/JIS()関数を利用した手順を考えましたがテキスト置換の代わりとしては手順につらいところがあります。, 一方、マクロでは、セル範囲指定による一括置換ができるうえ、ASC()/JIS()関数よりきめの細かい文字種処理を提供も可能になりました。, shegoさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog 全角カタカナを半角にするマクロを先日作りました。 全角を半角への変換はASC関数、半角から全角への変換はJIS関数を使って、ワークシート内でもできるのですが、 毎回入力するのは面倒ですよね。VBAを使えば別のエクセルファイルでも使える汎用的なプログラムが作れるのでとっても便利ですよ。 ただし、数字だけ半角へ変換し、カタカナなどは全角のままといった場合はvbaを使う方が容易と考えます。 全角の数字を半角に変換する. Excel シートのテキストデータの全角・半角文字を変換・置換する手順と、それを自動化するマクロを検討します。 全角文字と半角文字 日本語の文字コードには歴史的経緯のためか、英数字・記号・カタカナの文字に全角と半角の2種類の文字種があって区別されます。 複数セルの選択や列、シートまるごとも文字コンバート可能です。 マクロで処理をすることでブラインドタッチのデキル派遣さんから頼りない管理職まで誰が使っても品質に差がでません。, マクロを使えば文字の変換は簡単です。 正規表現で全角カタカナを検索します。検索は1文字ずつではなく濁音や半濁音や長音を含む連続する全角カタカナはまとめて検索しています。その後、検索で見つかった全角カタカナの数だけループし、Replace関数で全角カタカナを半角に変換しています。, A1からB2セルに入力されている状態で、それらのセルの値の全角カタカナを半角に変換して、A4セル以降に貼り付けるサンプルです。, CnvZenKanaToHan関数の内部処理でRegExpクラスをNewしていますが、これを呼び出し元で行うようにするとインスタンスの生成がなくなるため処理速度は向上します。, 以下のマクロは全角カタカナと半角カタカナには何があるのかを列挙しておいて、変換元の文字列に含まれる全角カタカナを全て半角カタカナに置換する方法です。, 全角カタカナの25文字分までが濁音と半濁音の半角カナ2文字用、といった決め打ちのコーディングです。, 正規表現や文字コードを意識する必要がなく、処理はより単純です。使い方は先に紹介した関数と同じですので省略します。, "ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン", "ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン", RegExpクラスのインスタンス変数を作成しています。事前に参照設定をしていることが前提になります。, MatchCollectionクラスの変数の各コレクション保持用の検索結果Matchクラスの変数です。, Patternプロパティには正規表現での検索条件を指定します。ここでは正規表現での全角カタカナである[ァ-ー]+を指定しています。全角カタカナが連続する場合はまとめて検索一致にするために+を指定しています。なお、[ァ-ー]は文字コードでの[\u30A1-\u30FC]と書いても同じ意味になります。私は[ァ-ー]の方が分かりやすいのでこっちを使ってます。, Globalプロパティには文字列の検索範囲を指定します。Trueは文字列の最後まで検索します。, 指定した検索条件で第一引数の文字列から検索します。検索結果はMatchCollectionクラスオブジェクトが返却されます。, 第一引数の文字列の内容を初期値として第二引数に設定しています。以降の処理で全角カタカナの部分は半角カタカナに変換されていきます。, 現ループの検索結果の全角カタカナをStrConv関数で半角に変換しています。ここで変換しているのは検索で見つかった全角カタカナの部分だけになります。, 第二引数の変数の全角カタカナをReplace関数で半角カタカナに変換しています。あとのループで同じ全角カタカナがある場合も変換してしまいますが、それはOKとしています。. |

数万セルの文字量になると処理に多少時間がかかりますのでしばらくお待ちください。, スムーズな操作にはショートカットに定義しておくのがおすすめです。 変換したい範囲を選択し、 開発リボンにあるマクロをクリック、 半角を全角 をダブルクリックするか、クリックしてから 実行 ボタンを押します。すると、 このように選択した範囲だけが全角に変換されました。 マクロ入りのExcelを保存するときは、

年とともに記憶力の低下を痛感し、「自分の経験の記録」と「エンジニア向け技術ブログ」を兼ねた『令ラボ』を立ち上げました。 エラー処理などはありませんのでアレンジしてください。, 変換したい範囲を選択してマクロを実行すると対象の文字をコンバートしてくれます。 ご覧いただきありがとうございます!あつもりです。 よくみたら全角だった。 なんてこともすくなくありません。 そんなごちゃまぜのエクセルがあなたの元に送られてきて ... 国交省「川の防災情報」から河川の水位をマクロで取得して全国の氾濫危険をエクセルで見える化, https://wporep.com/wp-content/uploads/zen-han-kana.mp4. note で公開していますので興味がありましたらご覧になってください。 この記事で紹介したマクロは、固定列の処理でした。(A列のカタカナを変換して、B列に書き込む), しかし実際にExcelでドキュメント作成をしていると、「選択したセルだけ変換したい」という場面が多いです。 Excelには「カタカナのみ」を全角半角変換する関数が存在しません。Excel関数では数字・記号も一緒に全角半角変換されてしまいます。そこで今回は、選択したセルに対しての「カタカナのみ」全角半角変換が可能なマクロを紹介します。