ジーザス小川です。
昨日は、新宿パークハイアットの最上階にあるラウンジで、ある受講生の方とお会いしていました。
今後、達人養成塾でもおおいにご協力をいただこうということでお話している方です。
彼が達人養成塾の「エクセルマクロ初中級速習コース」を受講したのは、去年の7月。
当時は時給の安い派遣社員だった彼は、今では、当時の1.5倍稼ぐようになっています。
自己投資にかけるお金にも余裕が出てきた、とうれしそうに語ってくれました。
お金がないときにする自己投資の苦労は、僕もすごくよく分かります。。
なにしろ、僕も、倉庫会社時代は、月収手取りで15万円。以前の彼よりも断然少ない状態でしたから(汗
でも、僕の場合もそうでしたが。
お金がないときにきちんと自己投資をしておくと、彼のように大きな収入アップという形になって後になって返ってくるものです。
さてさて、というわけで。
昨日の続きです。
この週末に大阪で実施した「エクセルマクロ初中級速習コース」で、昼休み中に出てきた相談がありました。
ややこしい話を、徹底してシンプルにまとめてしまったんですね。
○クライアントの要求にそのまま答えることが、真の解決とは限らない
○要件をシンプルにすると、プログラミングも楽になる
○「エクセルマクロで力づくで解決する」だけでなく、常に全体最適を考えるべき
ということです。
そして、最終的に書くべき!となったマクロは。
こんなデータ↓から
○以下のような、商品名とロット数を表にした情報がある
商品A│6│
─────
商品B│3│
─────
商品C│2│
─────
こんな表を作る、というもの。
商品A│1│
─────
商品A│2│
─────
商品A│3│
─────
商品A│4│
─────
商品A│5│
─────
商品A│6│
─────
─────
商品B│1│
─────
商品B│2│
─────
商品B│3│
─────
─────
商品B│1│
─────
商品B│2│
─────
と、言うことで。
最終的に、必要な要素だけを実装したマクロを書くと、こんな感じになりました。
こんな感じ↓です。
Sub nantoka()
Dim c As Long
Dim d As Long
Dim e As Long
d = 1
For c = 1 To Range(“A65536”).End(xlUp).Row
For e = 1 To Range(“B” & c).Value
Range(“D” & d).Value = Range(“A” & c).Value
Range(“E” & d).Value = e
d = d + 1
Next
d = d + 1
Next
End Sub
メチャメチャシンプルです ヾ(´ー`)ノ
書き始めの段階でタイマーをセットし、書き上げた段階で見たところ、1分35秒でした。
スピード重視ってことで、変数名もテキトウ!(笑
表を作成する先も、同じシート上にしてしまいました。本来なら、別のシートに出力するところですが…。
まあ、セミナー中の余興的な面があったのと、同じシート内のほうが見た目にインパクトもあるということで ヾ(´ー`)ノ
最初の話に戻りますが。
もしも、依頼時にあった要求を全部呑んでいたら、5分くらいかかったものと思います。
○クライアントの要求にそのまま答えることが、真の解決とは限らない
○要件をシンプルにすると、プログラミングも楽になる
○「エクセルマクロで力づくで解決する」だけでなく、常に全体最適を考えるべき
と、いうことですね。
無駄な仕事はしないようにってことでマクロを書くわけですから。
要件定義の段階から、無駄はそぎ落としたいものです。
こういう決断力は、マクロを書くときに限らず、事務仕事すべての面で大事だと感じます。
それにしても、こういう作業。
手作業で作ったら、いったいどのくらいかかるんでしょうね。
商品が300個くらいあったら、それだけでも1時間半(90分)くらいはかかりそうですね。
てことは、90秒でマクロを書き上げたとしたら、この仕事だけに限って言えば、だいたい、60倍の生産性てことですね。
今日は、午後から打ち合わせです。そのあとは、夕方、税理士さんと会っています。
夜は、数年のつきあいになる、経営コンサルタントをしている友人と地元で会食します。豚肉の予定です。
それでは、本日も、よい日々を!