全角・半角・カタカナ・ひらがな…誰が悪いわけでもないのに、直すのは私
~ これ知らずに何時間やってたんだろう 文字統一マクロの話 ~
≪このマクロをAIに書いてもらう命令文をAIに考えてもらいました。≫
Excel事務が一気に楽になる自動化マクロ10選
ショーン流マクロ 第7話 より
この記事は長くなりましたが、実際に煩雑なデータを扱っている方や
不勉強な前任者が、何の改善もしないままやり通してきたファイルなどを
引き継ぐことになってしまった方の精神衛生上の問題を少しでも軽減できるように心をこめて書きました。
是非、最後まで真剣にお読みになり、今後私が書き続けるこのシリーズも手を動かしながら学んでいっていただきたいと思います。
あなたの会社のExcelデータ、
こんなことになっていませんか?
氏名: 山田 タロウ
山田 たろう
山田 タロウ
山田 太郎
全員、同じ人です。
でも、Excelには
4人の別人として認識されています。
誰かが意地悪をしたわけじゃない。
Aさんはいつも全角で入力する。
Bさんはキーボードの癖で半角になる。
システムから落としたデータはカタカナ。
古いファイルはひらがな。
誰も悪くない。
でも、直すのはいつも私。
手作業で直そうとすると、
1行ずつ確認して
コピーして
貼り直して
また次の行…
100行あったら、どうしますか?
500行あったら?
「今日もこの作業か…」
そう思いながら、
黙々とやっていませんでしたか。
私もそうでした。
でも今は、
ボタンを1回押すだけで終わります。
それを実現してくれるのが、
今回のマクロです。
このマクロでできること
✅ 半角文字を全角に統一する
✅ カタカナをひらがなに統一する(オプション)
✅ 指定した列の、指定した範囲だけに絞って実行できる
マクロを使う前に
エクセルでマクロを使うには、
最初に少しだけ設定が必要です。
「でも、いきなり本番データで試すのは怖い…」
そういう方のために、
バラバラな氏名データが入った
練習用Excelファイルを用意しました。
まずはこのファイルで試してみてください。

↓ こちらからダウンロードできます
【ファイル添付】 ダミーのリスト(マクロなし)
マクロが使えるようになるエクセルファイルの設定の方法は
~ショーン流マクロ 第1話~ 第2章以降に書いています。
まだの方は先にそちらをご覧ください。
~ショーン流マクロ 第1話~ 第3章 人生初コードを書こう
まで進んだら、挿入した標準モジュールの白い画面へ下のコードを
コピーペーストしてください
Sub 文字変換()
Dim ws As Worksheet
Dim s As Long ' スタート行
Dim e As Long ' エンド行
Dim r As Long ' 対象列
Dim i As Long ' ループカウンター
Dim original As String ' 変換前の値
Dim converted As String ' 変換後の値
Set ws = ActiveSheet
s = CLng(InputBox("スタート行Noは?"))
e = CLng(InputBox("エンド行Noは?"))
r = CLng(InputBox("変換する列Noは?"))
For i = s To e
original = ws.Cells(i, r).Value
converted = StrConv(original, vbWide) ' ①半角→全角カタカナに統一
'converted = StrConv(converted, vbHiragana) ' ②全角カタカナ→ひらがなに変換
If converted <> original Then
ws.Cells(i, r).Value = converted
End If
Next i
MsgBox "変換完了しました!"
End Sub
次に ボタンを挿入してください。

とりあえずボタンの位置は上記のようにして、名前は『いらいら解消』
ファイル名を 『Masterダミー.xlsm』 として保存しましょう。

リストには、しめい列に ひらがな、カタカナ、全角、半角入り乱れて入力してあるため、検索やソートその他エクセルの機能が使えません。
この修正には、手間と時間とストレスが自分にのしかかってきていました。
さて、マクロを実行してみましょう。
『いらいら解消』ボタンをおして

スタート行は 5 を入力

エンド行は 35 を入力

変換する列Noは 27 (AA列番号)を入力
そして、OKを押すと

マクロを実行する前と比べると 全部が全角文字に変換された
しかしまだひらがなになっていません。
少し内容を変更してみましょう。
標準モジュールを開いてみましょう。

標準モジュール画面上に上記赤矢印のところ 『 ' 』アポストロフィーがあります。これを消去してください。


マクロを保存しましょう。

もう一度同じ要領でマクロを実行してみましょう。

さて、いかがでしょうか。
全角のひらがなに統一されました。
行の先頭に ' がついていたのは、
これは「今は動かさない」という意味です。
この ' を1文字消すだけで、
カタカナをひらがなに変換する機能も
一緒に動くようになります。
たった1文字。
でも、その1文字を消したとき、
きっとこう思うはずです。
「あ、こういうことか。」
それがマクロを理解する
最初の一歩になります。
今は、マクロの意味はさておき楽してください。
おそらくマクロの意味が少しわかるようになれば、AIに指示を出してマクロを作っているでしょう。
次に、ここから注目です。
先ほどのマクロのコード 下記
Sub 文字変換()
Dim ws As Worksheet
Dim s As Long ' スタート行
Dim e As Long ' エンド行
Dim r As Long ' 対象列
Dim i As Long ' ループカウンター
Dim original As String ' 変換前の値
Dim converted As String ' 変換後の値
Set ws = ActiveSheet
s = CLng(InputBox("スタート行Noは?"))
e = CLng(InputBox("エンド行Noは?"))
r = CLng(InputBox("変換する列Noは?"))
For i = s To e
original = ws.Cells(i, r).Value
converted = StrConv(original, vbWide) ' ①半角→全角カタカナに統一
'converted = StrConv(converted, vbHiragana) ' ②全角カタカナ→ひらがなに変換
If converted <> original Then
ws.Cells(i, r).Value = converted
End If
Next i
MsgBox "変換完了しました!"
End SubこれをAIに読み込ませて、どのように命令したら同じコードが書けるのか質問してみました。
私: 次のExcelVBAのコードと同じものをAIに書いてもらいたい場合、どのようなお願いをしたらいいか教えてください。AI:クロード

その後、AIが答えてきました。

ーーー テキストを抽出しました 下記 ーーー
Excel VBAで、指定範囲のセルの文字列を半角カタカナから全角カタカナに変換するマクロを作ってください。
条件:
・実行時にInputBoxで「スタート行」「エンド行」「対象列」をそれぞれ入力させる
・StrConv関数(vbWide)で半角→全角カタカナに変換する
・全角カタカナ→ひらがなへの変換処理もコメントアウトで用意し、
必要な時だけ切り替えて使えるようにする
・変換前後で値に変化がない場合はセルへの書き込みをスキップする
・処理完了後にMsgBoxで「変換完了しました!」と表示する
・変数はDimで型を明示し、それぞれの役割がわかるコメントを付ける
ーーー ここまで ーーー
これを違うAIに入力してお願いしてみました。(ChatGPTへ)
ーーー 下記AIの答えです。 ーーー
Sub 半角カタカナを全角カタカナに変換()
Dim startRow As Long ' スタート行
Dim endRow As Long ' エンド行
Dim targetCol As Long ' 対象列
Dim i As Long ' 行番号
Dim beforeValue As String ' 変換前の文字列
Dim afterValue As String ' 変換後の文字列
' スタート行を入力
startRow = CLng(InputBox("スタート行を入力してください", "スタート行"))
' エンド行を入力
endRow = CLng(InputBox("エンド行を入力してください", "エンド行"))
' 対象列を入力(例:A列なら1、B列なら2)
targetCol = CLng(InputBox("対象列を入力してください" & vbCrLf & _
"例:A列 → 1、B列 → 2、C列 → 3", _
"対象列"))
' 指定された行を順番に処理
For i = startRow To endRow
' セルの値を文字列として取得
beforeValue = Cells(i, targetCol).Value
' 半角カタカナ → 全角カタカナ
afterValue = StrConv(beforeValue, vbWide)
' 全角カタカナ → ひらがなにしたい場合は、
' 上の行をコメントアウトして、次の行を有効にする
' afterValue = StrConv(afterValue, vbHiragana)
' 変換前後で値が変わった場合だけセルに書き込む
If beforeValue <> afterValue Then
Cells(i, targetCol).Value = afterValue
End If
Next i
' 処理完了メッセージ
MsgBox "変換完了しました!", vbInformation
End Sub使い方
例えば、
スタート行:2
エンド行:100
対象列:3
と入力すると、
C2~C100
を処理します。
たとえば、
カタカナ
ハンカク
ショーンマクロ
が、
カタカナ
ハンカク
ショーンマクロ
のように変換されます。
ひらがな変換に切り替える場合
現在は、
afterValue = StrConv(beforeValue, vbWide)
が有効です。
全角カタカナをひらがなにしたい場合は、
' afterValue = StrConv(afterValue, vbHiragana)
の先頭の ' を外します。
ただし、半角カタカナ → 全角カタカナ → ひらがなと一気に変換するなら、この形です。
afterValue = StrConv(beforeValue, vbWide)
afterValue = StrConv(afterValue, vbHiragana)
この作りなら、以前お使いのマクロのように**「指定した範囲だけを処理する」**形で応用しやすいです。
ーーー AIの答えここまで ーーー
ご丁寧に、使い方まで教えてくれました。
少し、コードが長くなっていますが、エクセルのマクロとして取り込んで
実行ボタンを押してみたら同じように動きました!!
私たちは、もう今更、0からマクロを作成する必要はありません。
例えば今日、元となるマクロがあるので、これをもとに、いろいろAIにお願いしましょう。
先ほどのマクロと一緒に
ある列の重複するデータがわかるようなマクロを組み込んでください とか
お願いしていくと、どんどんあなたの気持ちがこもったマクロが完成していきます。
それと同時にあなたの気持ちが軽ーくなっていくでしょう。
余った時間はあなたの自由に使えます。うれしくなりますね。
まとめ
毎日、誰かが入力したバラバラなデータを
黙って直し続けていた。
それはあなたのせいじゃない。
仕組みの問題だった。
でもこれからは、
そのイライラを
マクロに任せることができます。
ボタンを1回押して、
空いた時間で
コーヒーでも飲んでください。
そして、AIを使ってどんどんあなたの思いに沿ったマクロが出来上がります。
今までの、無駄な時間は何だったんだろう。と思う日は近いですよ。
あなたの貴重な時間をいただき、
ここまで読んでいただきましてありがとうございました。
お役に立てたら幸いです。
ショーンより。
