僕はこのブログのタイトル通り非IT企業に勤める非ITエンジニアです。
ネット界ではエンジニアと言えばITエンジニアを指す風潮がありますが、本来であればエンジニアとは工学系の技術者を指します。もちろんIT技術者もエンジニアで良いのですが(大学でも工学系に属するだろうし)、でも一体いつからエンジニア=IT技術者を指すような風潮になったのか、ちょっと不満です。(日本だけかしら?)
余談はさておき、趣味でプログラミングやっている僕は会社でもExcelマクロを駆使して自分の業務の効率を上げてきているわけです。で、そんな僕に社内でいろいろな方面からマクロ製作の依頼が来るわけですね。
別途記事にしますが、非IT企業でプログラミングやりたければExcelマクロ一択です。それ以外の選択肢はありません。
で、非IT企業の中の人って、Excelマクロを触れる人なんてごく一部なわけです。大半はIT音痴。日本のトップクラスの大学出身の秀才が揃っている弊社でも、なぜかITのことになるとおバカになっちゃうんですね。
そんな日本企業のサラリーマン全員に言いたいのだけど、ITで業務を効率化してほしかったら、Excelの作法で最低限ここまでやれと言いたいトップ3について書きます。
1セル1データの原則
すべてきっちりというわけでもないけど、基本的にExcelは1セル=1データが原則です。ところが、例えば下の図のように文字データと日付データをくっつけたまま1セルに入れてしまうケースが割とあります。
表の途中に合計行みたいなもの入れるな
これが遭遇率ダントツ1位のパターンです。いまだ多いですね。
このデータを使って様々な解析をしたい(マクロマンに依頼したい)のなら、データの法則性は変えてはいけません。
なんでこれがダメなのか?って思う人も多いのでしょう(だからこれをやっちゃう)。
プログラム的にはforループで上から順に参照していって最終行になったらループを止める、という処理の中でデータを引っ張ってくるわけです。で、何を持って最終行にするかというと、だいたい「A列(B列でもいいけど)空欄になったら」とします。
ところが、途中で上の合計のような行が現れると、そこで止まってしまい正しい処理ができなくなります。
もちろん、これもできなくはありません。「特定列に合計という文字列があったら無視」とか「連続して2行が空白だったら」とか、そんな処理をすればできなくもありません(実際そうしている)。
ただ、これによって余計なロジックを組むことになるし、データ数によっては処理速度に大きく影響します。
表の2ページ目以降を横に伸ばすな
表を印刷ページごとに横に伸ばすケースもあるんですよね。印刷すればたしかにきれいに印刷されますが、プログラム的には超厄介なケース。