top of page
  • 執筆者の写真nakao

業務効率化_表記揺れの解消[Excel VBA]

更新日:2022年2月12日

 将来、人間の仕事の大部分はAIに取って代わるため失職する人間が増えるだろう。

 半導体技術が発達し、比較的安価で高性能マシンを入手できる今、上記のようなセリフを聞いたことがある方は多いのではないでしょうか。筆者はAIソフトウェア開発を生業としており、多くの方から同様の質問を受けることがあります。将来という言葉を短中期的時間軸を前提とするときはケースバイケースというのが個人的な回答です。例えば、工場の生産ラインで真上から製品を観察し、出荷OKか出荷NGかを目視判別できる場合、既存技術でAIを用いた自動化を実現することができます。要はシンプルかつ人間の五感を使って行うような高度な検査でないものは置き換えることができる可能性が高いということです。ただし、責任や保証という点からすると、法律、組織内ルールに従わなければならないため、今は最終的に現場の人間が判断するというケースが多いというのが実情です。

 また、人間が行う業務の代替手段をコンピュータによる自動化という範囲にした場合、必ずしもAIを使う必要はなく、マクロプログラム(ある行動を自動で実行するプログラム)で解決できます。AIの台頭で自動化=AIという誤った認識が広がっておりますが、例えばスーパーのレジも会計を瞬時に出力できる自動化プログラムの一種です。難しく捉える必要はありません。

 今回の記事は先日友人から以下の相談をもらい、解決したときかなり感動していたため、ぜひ同様のお困りごとがある方がいたらヒントにしていただきたいと思い執筆しました。

 

~ほぼそのままのやり取り内容~

友人:

 Excelファイルに半角や全角が混ざっている。それを手で一つずつ確認して修正するのが時間かかるし超面倒くさい。苦痛でしかない。何かアイデアある?

筆者:

 Excel VBA使えば一瞬で解決できるんじゃね?

友人:

!?

筆者:

 説明するの面倒くさいから10分待って。ファイル作るから。

友人:

(10分後)できた!2時間くらいかかってたのに、1秒で終わった。Thanks!

 

 赤い太字で記したExcel VBAをご存知でしょうか。これはMicrosoft Excelに搭載されている一つの機能でして、自身でやりたい作業の自動化を実現してくれるツールです。専門知識が云々とか良く言われますが、ネットで調べながらやれば大体できてしまうため、覚悟決めて腰を据えて勉強するほどでなくともよいです。例えば、以下の表を見てみましょう。

恐ろしく統一感が取れていません。綺麗に直さなきゃいけないとき、これが1万件もあったらと考えると絶望します。手で作業するというのは極めて無駄です。こういうとき、皆さんならどうしますか?

  1. 手動で気合いと根性で乗り切る

  2. 解決できそうな高額ソフトを探して購入する

  3. 諦める or 他人に丸投げする

  4. プログラム組んでExcel VBAを自作する(+教えてもらう)

飯塚市がIT先進Cityを目指すならば、飯塚市の皆さんは迷わず4を選びましょう。では、ここから解決策を記していきます。


流れ① Excel開いて「開発」→「Visual Basic」をクリック


流れ② 「挿入」→「標準モジュール」をクリック。

意味わからん画面が出た。もう無理、やめた。

とならないで下さい。私の経験上、こういった画面を見た瞬間に諦める方が9割います。


流れ③ 「ググる」→「コード」を入力。

Excel VBAはコーディングが必要ですが、最小限ルールを覚えればなんてことはありません。Googleで検索して、同じ課題の解決方法を公開している方が沢山います。完全に同じであれば参考にして入力すればよいです。

 もし友人の課題と同じであれば、以下をコピペしてください。


Sub 名前整えるくん()
    Dim i As Long, v As Variant, temp As String
    Dim Name As String, Hurigana As String
    
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        Name = StrConv(Cells(i, 1).Value, vbNarrow)
        
        
        Do
            tmp = Name
            Namae = Replace(Name, " ", " ")
        Loop Until tmp = Name
        
        If InStr(Name, " ") > 0 Then
            v = Split(Name, " ")
            Cells(i, 1).Value = v(0)
            Cells(i, 2).Value = v(1)
        End If
        
        Hurigana = StrConv(Cells(i, 3).Value, vbKatakana + vbNarrow)
        
        Do
            tmp = Hurigana
            Hurigana = Replace(Hurigana, " ", " ")
        Loop Until tmp = Hurigana
        
        Cells(i, 3).Value = Hurigana
    Next i
       
End Sub

流れ④ Visual Basicの画面を閉じて「マクロ」→「名前整えるくん」をクリック。

1クリックで全ての処理が完了します。Done!


実験してみましょう。ルールが滅茶苦茶なリストをランダムに1,000件作ります。

先程作った「名前整える君」をクリックします。

0.1秒くらいで終わりました。Done。


 やりたいルール通りに自作して、自分の仕事に活用することができるのがExcel VBAの強みです。日本ではWindows OS、Microsoft Officeを使っている企業が殆どです。お金をかけなくても、今ある環境でサクッとお悩みを解決することができます。

 特に、日本語は全角/ 半角が混同しやすく、この表記の”揺れ”を人工知能で解決しようとする会社が最近目立ちます。ニュアンスの揺れではなく、今回紹介したような揺れ程度であれば、まずはExcelをもっと活用できないか、という方向で考えてみるのはどうでしょうか。もちろん、Excel VBAを使わずに関数を入力して解決していく方法もあります。そんなやり方あることをそもそも知らんって方もいると思いますので、ご要望をいただければ今後の記事に解決案を記載していくことも考えていきたいと思います。以上です。



閲覧数:962回2件のコメント

2 Comments


yanbo
yanbo
Feb 11, 2022

エクセルってできない事ないんじゃないの?ってくらいなんでもできますよね。今回のコードを入力してお困りごとを解決する方法はまだやった事なかったんで今度やってみたいと思います♪

Like
Y Nakao
Y Nakao
Feb 11, 2022
Replying to

さっそくのコメントありがとうございます。

とても簡単ですので、ぜひトライしてみてください。

Like
bottom of page