著者自身、『エクセルの達人』(エクタツ、現在は閉鎖済み)というウェブサイトに2021年8月~10月にかけて掲載したコンテンツを、当ウェブサイトでは不定期的に転載しています。本稿ではエクセルマクロについての随筆を転載します。
『エクセルの達人』(エクタツ)とは、「エクセル評論家」でもある新宿会計士が2021年8月から10月にかけて運営していたウェブサイト。現在は閉鎖済みだが、主要なコンテンツについては現在でも当ウェブサイト『エクタツ』にて閲覧可能。
当ウェブサイト(※転記注:旧『エクタツ』のこと)では「エクセルの達人」にふさわしい「高度なエクセルテクニック」をいくつか紹介していくつもりだが、こうしたなか、ニューズサイトに「マクロが大好きな人物」が執筆したと思しき記事を発見した。「マクロを使って業務効率化を」と唱える方らしいのだが、はたしてどう読むべきか。
エクセルを使用していると、どうしてもマクロを使わなければならないのではないか、と思う方も多いだろう。
当ウェブサイトは「エクセルの達人技」を精力的に紹介していきたいと考えているが、じつは、マクロ・VBA等については、あまり紹介するつもりはない。
なぜか。
それは、マクロ、VBAを知らなくても「達人」になることができるからである。
もちろん、マクロを知っていたら、便利であることは多々あるだろう。エクセルで頑張って延々何時間も仕事をしていることを、うまくマクロを活用すれば、それこそ10秒で終わることもあることは間違いない。
ただ、それと同時に気を付けなければならないのは、「属人化したマクロお化け」を作ってしまうと、それ自体が業務の円滑な推進の妨げになりかねない、という点だ。
こうした観点から、少し気になる記事を発見した。
「エクセル仕事」を見れば「ただ真面目」か「優秀」なのかがわかる理由
―――2021/8/20 6:01付 Yahoo!ニュースより【DIAMOND online配信】
『4時間のエクセル仕事は20秒で終わる』という書籍を執筆された人物へのインタビュー記事らしい。詳しい内容は実際に読んでいただきたいのだが、本稿ではリンク先のYahoo!ニュースの記事についていたコメントの要旨を2つ紹介しておきたい。
- マクロなど、誰でも自動化できるツールが生産性向上につながることは否定しないが、システム管理の立場からは、「素人が引き継ぎも考えず属人的なシステムを作ってしまうこと」は迷惑極まりない。本人が異動・退職でいなくなったあと、メンテナンスできる人がいないからだ
- マクロは確かに便利だし、単純作業の効率化に非常に向いているという面はあるだろう。しかし、少しかじった程度の知識の人が、自分自身にやりやすいように「良かれ」と思って作ったファイルは、関数も含めて引き継げないことが多い
…。
基本的には、同感だ。
要するに、「エクセルお化け」、「マクロお化け」を作ると、のちのち、現場に大きな負担が掛かる、ということだ。
当ウェブサイトの持論だが、エクセルは関数が基本であり、また、わざわざマクロを使わなくても、関数をひとつずつ理解して使えば、誰にでも「高度な仕事」はできるようになると考えている。
当ウェブサイトでも基本的にマクロをほとんど扱わず、エクセル関数を中心に紹介していきたいと考えている大きな理由は、まさにこの「ブラックボックス化」を防ぐためにあるのである。
View Comments (11)
作った当初はデータ処理作業がメチャクチャ早くなって喜んだ。
社内で皆が使うようになってからはその対応で余計な仕事が増えた。
もう自分は対応しないから自己責任で使ってねと念を押した。
忘れた頃に霞ヶ関の某省から「データに食い違いがあるけどどういう事?」と局→県→市→他社→ウチと連絡があったらしい。
知るかボケ!!!
マクロと数式を全部消すマクロを使うきっかけとなった出来事です。
著作権法違反で、訴えるべきでは(笑)
エクセルのマクロに否定的な理由をもう1つ付け加えると、エクセルのデータをコピーしたつもりでもマクロも含めてコピーされます。データが次々とコピーされ使われるのに伴ってマクロのクローンも増えてゆきます。暫くしてマクロ作成者のAさんがバグを見つけてマクロをVersion-Aに改編したとしても、既に広まってしまったマクロは古いまま。また別のBさんがマクロを見て改良してVersion-Bを作って広まって、・・・と次々に少しずつ異なるマクロが社内のあちこちに存在することになりバージョン管理は不可能になります。
どうしてもマクロでなければ出来ないプログラム(そういうケースは希ですが、例えばエクセルの作画機能をフル活用したものは他では作りにくい)の場合は、マクロ専用のエクセル(つまり、マクロが自分のエクセルデータを扱うのではなく、ユーザーが対象ファイル名をインプットして、そちらのエクセルデータを扱うもの)を作成して、バージョン管理をしていました。これならエクセルデータとマクロを分離することができてクローンがあちこちにばら撒かれることは少ないですが、そこまでするならVBAでなくVB.netで作ればよいわけでして。
マクロはあくまで私的なもので、他人に利用させるものではないです。尚且つ「明日の自分は他人」の忘却の人生を歩む者にとっては、少し前にメモ的にプログラムしたものでさえ、どういうつもりでこのコードにしたのかさっぱり思い出せないことが多いです。マクロであっても内容とフローが分かる資料を残すことは不可欠です。
マクロとかVBは簡単なやつはともかく、複雑なやつは時間がたつと自分でもわかんなくなるんですよね。私もほとんど関数に閉じて使ってました。
紹介記事のURLがリンク切れのようでした。オリジナルはこちらですかね?
https://diamond.jp/articles/-/279800
この記事に全面的に同意です。
ずいぶん昔私もエクセルマクロはじめたときに
特になまじっかでも作れる『手順マクロ』は
メンテできない問題にすぐぶち当たると気づきました。
かといって覚えたVBAもいくら注釈入れても
人によって書きよう様々で うーんなんだかなあと気づきました。
その一方で、会計士様もご指摘の関数については
VBAでも組めるものと同等のものをワークシートの一角に
複雑になりすぎない関数のセルの連携で
まとめて処理ユニットとしてまとめて置くと
VBAだとデバックで追わなければいけないものが
セルの再計算でたちどころに軌跡が追えることにきづき
そこをセルの保護をかけて触らせないことにして
多くの業務用ワークシートを若い頃作りました。
ただその後、忘れた頃に
〇〇さん(=私)のエクセルが壊れた?
との問い合わせの大半が私の作ったものではないことから
自分がその後面倒見るものには表のページに
その旨の記載を足しました(笑)
個人的には、
ただのパクリ金儲け屋ビル・ゲイツマイクロソフトの
エクセルに席巻される前のLOTUS123のマクロは
書いたスクリプト中にセルですから対象変数が反映されて
EUCの観点からは優れたものだったのにと今でも残念です。
こちらに、ロータス イチ ニ サン の
ファンがいらっしゃるようでね。
エクセルのマクロ
ボタン=図形 に、マクロ=コピペ 計算 関数を登録して、
自動化する簡単な程度が、
一番良いのかも知れませんね。
同じ作業を、毎日毎日 何回も何回も、
繰り返し行うくらいなら、
ボタン を一発、押すだけの方が、
断然、精神的に楽なので。
>本人が異動・退職でいなくなったあと、メンテナンスできる人がいない
これには同意なのです♪
だから、VBなんかは自分で使うのならともかく、次の人に引き継ぐものじゃないと思うのです♪引き継ぐのは、計算結果やその導出過程だと思うのです♪
ただ、関数もいっしょだと思うのです♪横にあるいくつかのセルの値を足したりする程度ならともかく、あちこちから値を引っ張ってきて、計算結果をまた別のとこで使うなんて複雑なことをされると、計算過程を追っかけるだけで一苦労なのです♪
システム化するなら、ちゃんとお金を出して開発と維持をすべきだと思うのです♪
日本みたいなメンバーシップ型労働だと、マクロぐらいしか選択肢が無いってのも大きいかな。
ジョブ型にして各部署にITエンジニア雇用するのが最適なんだろうけど。
私は関数だけで、「万年カレンダー」が作れます。
マクロとは聞こえがいいようですが、要はあれはプログラミングですからね。記事にもある通り、社内に、引継ぎができる余裕があるとか、メンテナンス・維持できる余裕がある会社じゃないと、手を出さない方が無難です。
VBAはプログラミング言語なので、分かるㇲタッフがいればいろいろなことができます。スーパーマリオだって作れますし(関係ないけど)。ものによっては大幅な作業を短縮できるマクロも作れるわけで。
でもやっぱり、メンテナンスできるスタッフが常時いないと、結局は会社の負担になっちゃなますよね。
エクセルマクロという手法は「嫌い」ではあるけど、それは「表(組版)」と「計算」を切り分けたいから。
スクリプト自体は(複雑な関数より)保守性が高いと思います。
いや分けたら表計算じゃないよねw、って言われたらその通りで、だからもうエクセルファイルが属人化するのはしょーがないし、引き継ぎたくないという点ではマクロお化けだろうとセル参照お化けだろうと紙エクセルだろうと同じかな。
「コスト」を20秒人に下げたのは結構なことだが、その「品質」を保証できるのは当人だけであって、引き継ぎは4時間人のままであるべきだし、それなら前任者にロックインしたエクセルファイルを使い続ける必要もない。
個人の業務改善を会社のワークフローに組み込むなら正式な手続きを踏んで責任者を明確にすべき。
…まあ、そうはならないよね(トホホ
表計算は、表計算。プログラムは、プログラム。
夫々、別ものと考えて使わないと。
表計算は、計算式とデータが、一体化しているもの。だから、データは、そのbookでしか使えない。
bookが壊れると、データも消失してしまう、使えなくなる。
プログラムは、データ(ベース)と、プログラムというアルゴリズム(計算式を含む)が別になっている。
だから、そのデータ(ベース)は、別のプログラムでも使える。
そして、マクロは、bookに付随しているもの。