エクセルの落とし穴
ピッキングリスト作成の方法は、お客様から送られてくるエクセルの出荷指示書(以前に弊社にてレイアウトを作成)の中のピッキングリスト作成ボタンをクリックすることで、別のエクセルファイルにピッキングリストが作成されるというものです。
改善効果は、ピッキングリスト作成ボタンをクリックしてから、ピッキングリストが印刷できる状態になるまで、改善前は平均86秒かかっていたものが、5秒で完了するようになりました。(なんと、17倍の高速化!)
結果としては、改善方法はとても単純なものだったのですが、そこにたどり着くまでは、結構悩んでしまいました。
スピードが遅いということは以前から聞いており、システム出身の私は、データの件数が増えたためと思い込んでしまっていました。その思い込みの理由は、送り先マスタ=1000件と商品マスタ=600件をエクセルのシートに保存してあり、ピッキングリストは、この中から検索して作成しているというプログラムになっており、エクセルの限界またはプログラムの作り方の問題と思い込んでしまいました。
で、この思い込みから、まずはじめに、プログラム内部で、一番時間がかかっている処理はどこかを突き止めるために各処理のタイムを計りました。
次に、プログラムの組み方を検討し、実際に修正をかけていったところ、ふと、プリント出力の設定を見ると、縮小して印刷をする設定になっていることに気が付いたのです。
「 もしかして 」と思い、縮小設定をはずしてみました。・・・が、結果は同じでした。
気を取り直し、また、プログラム修正作業に戻りました。
このとき、ピッキングリストを別の新しいシートに作成する方法を導入したのですが、何気なくエクセルのファイル容量を見ると、元のエクセルが1.9Mあったのに、新しいシートでは、0.3Mとなっていることに気が付きました。(もちろん、新しいシートには、各マスタが登録されている状態です。)
これは「 何かある 」と思い、エクセルシートをまじまじと見てみましたが、・・・何も見つからない。
でも、あきらめず、よく考えていると、またまた「 もしかして 」と思い、エクセルの「 オブジェクトの選択 」というアイコンを使用して、エクセルシート全体を調べたところ、なんとなく怪しいものが見つかりました。
ただ、この程度のもので、あんなにスピードが遅くなったり、容量が増えることはありえない、とは思ったのですが、「 要らないものは消す 」で消してみると、・・・ビンゴ!容量が減って、スピードアップされました。
要らないものの正体は、エクセルのオートシェイプの「 直線コネクタ 」だったのですが、1個や2個ではなく相当の量が貼り付けられていたようで、20個まで数えてあきらめました。(処理スピードが遅いため、数えるだけでもすごく時間がかかったので。)
結局、プログラム修正作業も不要になったので、対費用効果を考え、修正作業はやめました。
今までの苦労は・・・でも、現場には喜んでもらえたのでよかったかな。(時間短縮効果だけでなく、作業者の精神衛生上の効果もあったようです。)
今回の例は、特殊な例ではあると思うのですが、次のようなことを考えさせられるものでした。
長文となりましたが、読みにくい文章を、ここまで読んでいただきありがとうございました。
皆様、これからもよろしくお願いいたします。
PS.
後日、社内ブログにいくつかの書き込みがあり、今回のような件は、特殊な例ではなく、よくあるということでした。
ということは、この記事を読んで頂いている方の中でも同じような現象が当てはまるかもしれませんので、一度、エクセルシートに無駄なものが張り付いていないか確認されてみてはいかがでしょうか。