共有ファイルあるある
仕事で使う共有ファイルの場合、いろんな人がいじります。いろいろルールを設けているのですが、性格もスキルも十人十色。また、引継ぎがうまくいってなかったり、伝え方が間違っていたり、受け取り方も人それぞれでなかなかうまくいかない。というより、スキルが低過ぎるのと、スキルアップしようとする意識が低い、要はやる気に欠けていると言ったほうが正解かもしれません。シートの不具合を見つけるたび、いちいち修正しなくちゃならない。忙しい時だとかなりイライラします。
特にイラっとするケース
代表的なイラっとするケースが以下の4つです。今回は1の全角と半角のごちゃ混ぜについて。
- 全角と半角がごちゃ混ぜ
- 環境依存文字が含まれている
- 余計なスペースが文頭、文末隠れてる
- セル内改行をしてる
一番許せないのが、会社名とかでアルファベット表記の場合に全角・半角の混在や電話番号、郵便番号、住所の番地等の数字においても全角・半角が混在してる場合。ルールでは【数字、記号は半角で統一する】となってるのに、なぜ全角が存在するんでしょうか?とても理解に苦しみますが、いちいち犯人探しをして指導するのも時間の無駄なので、見つけては修正しています。
関数を使う場合
今までは関数で対応していました。というより、関数しか使えなかっただけですが…
全角→半角(ASC関数)
全角から半角へ変換する場合の関数は、ASC関数を使います。 空白列でASC関数で変換して、元の列へコピペすればOKです。
半角→全角(JIS関数)
半角から全角へ変換する場合は、JIS関数を使います。 こちらも空白列でJIS関数で変換、元の列へコピペでOK。
マクロで一括変換
関数でも問題ないのですが、列が増えてくると結構面倒です。最近VBAをかじり始めたので、それならマクロで一括変換できた方がいいじゃん。てなわけでマクロを作ってみました。アドイン登録しておけば、範囲を選択 → Alt → テンキーで一括変換できるので時間短縮できるし、何しろ仕事できそうに見えるだろうということで。
全角→半角
変換したいセル範囲を指定し、以下のコードを実行します。
'選択した範囲を半角変換 Dim A As Range For Each A In Selection A = StrConv(A, vbNarrow) Next A End Sub
全角→半角、ただし ~ (チルダ)は全角のまま
要望があったので追加しました。変換したいセル範囲を指定し、以下のコードを実行します。
一旦半角になった ~(チルダ)を Replace で戻しています。
'選択した範囲を半角変換 Dim A As Range For Each A In Selection A = StrConv(A, vbNarrow) A = Replace(A, "~","~") Next A End Sub
半角→全角
変換したいセル範囲を指定し、以下のコードを実行します。
'選択した範囲を全角変換 Dim A As Range For Each A In Selection A = StrConv(A, vbWide) Next A End Sub
【Excel VBA◆素人自作マクロ】全角を半角に、半角を全角に変換するマクロ
手でやらなくてもいい作業は、どんどんパソコンでやりましょう。もしよかったらコピペして使ってみてください。はい、これでまた仕事はかどる楽できる。徹底的に手抜きしましょう。