課題解決 事例紹介

1000シートを超えた、巨大サイズの在庫管理Excelファイルの改修

導入目的 注文情報と在庫の管理、及び請求書の自動発行。
課題 顧客別・品種別の管理シートが合計で1000シート以上存在する
効果 シートではなく、目的別にファイルを分割し、VBAで処理することで回収が不要となった

対象業務概要

A社は農産物の販売を行っています。
取り扱う商品の種類が多く、また盛り合わせのようなセット販売も行っています。
FAXで来る注文を顧客ごとのシートに転記し、在庫シートに集計後、手作業で売れた分を減らします。減った在庫の補充は、定期的に行っています。
また、発注を翌月初に取引先ごとに集計して、請求書を発行しています。

ご相談内容

取扱商品は季節ごとに変動するので、毎月在庫シートの式を修正していました。
顧客も毎月変動するので、シートを追加する必要があります。
すごい勢いでシートが増えた結果、1000シートを超えて、再計算などで仕事時間の半分近くが待ち時間という状況に陥ってしまいました。
あまりにファイルが「重くなった」のと、毎月式を修正する手間がかかる、さらにたまに式の設定を間違えていて気付かないことがあるので、これを機に作り替えられないか、とのご要望でした。

当事者が考えた原因・対策

誰がどう見ても、直接的にはシートが多いのが原因です。
このため、今使っているシートだけに減らしてほしいというのが、当初の方針案でした。
また、関数は相互参照をしていることから、どこに影響がでるか、慎重に見極める必要があります。
関数自体を見直して、頻繁に修正しないでも対応できる作りにすることが出来ればいいな…と考えていました。

真の原因と対策

関数を使う場合、計算対象となる数字があるシート・セルは基本的に固定となります。
その為、在庫が増えたり取引先シートが増える都度、修正が必要だったのです。
VBA(マクロ)を使えば、ファイルをまたいで情報のやりとりができますから、まずは顧客シートを切り離して1Book=1シートにして、「あるフォルダに入っているファイル全てを読み込む」ようにすれば、関数を直す必要も壊すリスクもなくなります。
同様に、取扱商品も切り離して別Book化すれば、関数の影響を受けなくなります。
また、年間通じて取り扱う商品すべてを登録しておき、今使う商品だけフラグを立てるような運用にすれば、管理が楽になります。
その上で、同じ取引先単位で集計すれば、請求書に集計できます。
前月の調整が必要な場合も、注文ファイルと同じファイルに赤伝をきればよいので、運用が柔軟になります。

このように、単に軽量化や自動化をするだけでなく、年間を通じた運用の特性を理解した上で自動化方針を策定することで、従前よりも楽な(=ミスの少ない)やり方が可能となりました。