こんにちは。くろこんです。 Excel 業務をDX化というお題に興味があったので書いてみました。著者は基本として Excel 信者ですが、代替手段も紹介していきます。
Excel 業務をDX化 基本姿勢
基本は VBA で何とかするとなります。Excel の最大の利点は誰に渡しても使ってもらえることです。 Python や Matlab にはない利点です。(プログラムとの比較ですみません)
業務効率化に有効なのは経験的に正規表現です。これを知っていると知らないでは大きく VBA の処理の効率が変わると思います。
正規表現
文字列の比較に使えて、かつ文字列を一般化して表現できる方法です。
Sub RegexTest()
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "\d{3}-\d{4}" ' 郵便番号形式
regEx.IgnoreCase = True
If regEx.Test("住所は123-4567です") Then
MsgBox "郵便番号が見つかりました"
End If
End Sub
"\d{3}-\d{4}" の部分が正規表現です。この場合は「3桁の数字の次に-があり次に4桁の数字がある」ことを表します。
123-4567 のような固定の値ではなく「~~である」のように一般化した表現になり、文字列の検索や比較が飛躍的に楽になります。
そのため、正規表現を使えるか否かは、DX化の効率に大きく影響があり、最重要のDX化手段の比較項目だと思います
秘伝の創始者に関して補足
業務で使うという話であれば、後で秘伝のマクロにならないように、シートを1つ追加して処理をまとめておくくらいはした方が良さそうです。
実経験として Excel 縛りになった期間はそれほどないため、あんまり秘伝はしていないと思います。たぶん。
Excel 業務をDX化 代替手段
ここでは、Excel の代替手段を紹介していきます。
html + JavaScript
これはパソコンの環境が間に合わず、Excel も Python も使えない時に代替で使ったことがあります。
VBA での基本的な処理はできつつ、誰に渡しても使ってもらえるという点を満たすため、悪くない手段だと予想しています。あまり長い期間使っていなかったので、使いこなしてはいないです。
(あんまりこのパターンは見たことが無くて、Excel があればあえて使わない、などあるかもしれません。素人意見です)
Python
科学技術計算に対応したプログラミング言語です。周囲も使えるようになっている前提であれば、課題解決という意味での汎用性がとても高いです。正規表現や高次方程式が相手であっても難なく相手にできます。もしくは、本人だけで課題解決して、他の手段で周囲に配るのも有効です。
ガチャの確率期待値、自動販売機の最適な残り硬貨枚数、評価スクリプトの自動実行とログのツリーの生成など、とにかく最強です。
一方で、通常の Excel 業務であれば、正規表現が使えれば十分なことが多く、あえてここまでしなくていいかなとは思います。 Excel なら誰でも使えますが、Python を全員使えるようにするのは少し大変です。
(おまけ) UWSC
これはちょっと変わったソフトで、Excel は表計算に対してスクリプトを組みますが、UWSC はマウスやキーボードなどの操作に対してスクリプトを組みます。
Wikipedia での情報によると、現在更新されていないようですが、著者が使った当時は業務効率化のために利用を進めたこともありました。
VBA と似たような文法で記述でき、スクリプトの処理としては似たようなこともできるため、定型的な作業であれば大幅に効率化できます。
ただ、現在は更新もされていないとのことで、業務利用は厳しいかもしれないです。(今回の記事を書くにあたり、久しぶりに調べました)
まとめ
- Excel VBA 最強 作ったものを誰でも使える
- html + JavaScript 使いこなせれば強いかも
- Python 課題解決の汎用性最強
今回の記事は以上となります。お読みいただきありがとうございました。