Technoboseの日記: EXCELで表引きする作業の正しい自動化は? 2
マスターデータを作成する作業の一部で、他のレコードの値を参照して計算したレコードを登録する必要がある。
そのレコードは一件ごとに二万件ぐらいのマスターデータから、百件ぐらいの他のレコードの値を参照して加重平均をとるといったもの(件数は二十件くらい)。
マスターデータ自体は汎用機に登録されているほか、汎用機に登録するための元データがAccess形式で作成されている。
で、これをどういう訳か、職員がマスターデータを汎用機で検索して、伝来のExcel表に入力・計算しているわけですな。
表引き作業を機械化するだけで、かなりの省力化できるんだけど、ここでどのような方法をとるのが最も確実・安全か。
条件としては、まず参照する他のマスターデータのインテグリティを確実に保障する必要がある。
次に動作が軽くて、わかりやすいこと。
最後に作業終了後、機械化した痕跡を綺麗に消せること。
ACCESSに記録されているマスターデータをExcelにコピーして、Excelの表引き関数を使うというのは、インテグリティの問題と動作の確実さの面から論外なので、VBAでMDBを読みに行くこととした(手作業主体になると検証作業が大変)。
昨年度までは、Excelの汎用モジュールにDAOでMDBを検索する関数を作り、これを計算表に埋め込んだ。
この方法は直感的でわかりやすいんだけど、表引きの件数が多いので同時に走るDAO処理が多くて動作が重い。
それと計算するセル毎に関数を埋め込むので、後から痕跡を消すのに一手間が必要でよろしくないかも。
いろいろ考えた結果、どうせ計算するセルは縦に並んでいるんだし、セルを一つ一つスキャンして値を検索、書き込むプログラムを書けば良いのでは、と思いついた。
これなら計算結果の検証後、標準モジュールを解放すれば痕跡は消えてしまうし、やり直しが必要になってもモジュールを読み込めば対応できる。
・・・と思ってるんだけど、どうでしょうね。
単純に (スコア:0)
外からデータを取り出しにくい汎用機をリプレースするべきでは
# 業務フローのボトルネック改善なくして継続性のある効率化なし
2016 (スコア:0)