エクセルで編集するときは、入力と出力のファイルを分けよう

ExcelVBAで表のデータを使う処理を作るときには、入力用、出力用のシートを分けた方が便利です。さらにはVBAの処理を行うファイルをデータファイルから独立させておくと便利です。

IPOってなに?

Excel VBAの設計は事前準備から 大規模システムでも使える「IPO」とは

という記事がありました。IPO とはInput Process Output のことだそうです。Excel VBA でシステムを設計するということは、インプットとアウトプット、そしてその途中のプロセスを決める作業だということです。これについて少し説明してみましょう。

インプットのシートとアウトプットのシートは分けよう

エクセルの表を加工したいとき、このセルに結果を入れたいからと、計算した値をもとの表に直接書き込んでしまう人がいます。けれどもこれはあまり良い方法ではありません。

まちがえた、なおさなきゃ、ってときに元の表がそのまま残っていないと困る場合があります。元の表はそのまま残し、そのシートをコピーしたものに計算した値などを書き込む処理にしたほうがいいですね。つまりインプット用のシートとアウトプット用のシートを分けておきましょう。

  • ×:もとの表を直接加工してしまう
  • 〇:もとの表は変更せず、もとの表をコピーした表を加工する

VBAのプログラムが入ったファイルとデータのファイルを分けよう

同じように、VBAのプログラムが入ったファイルと、インプット用、アウトプット用のファイルを分けておくと便利になります。
どういうことかと言うと、下記の例で説明します。

私はよく、上の図のようなシートを作ります。このシートは処理のインプット用のデータ結果ファイルやアウトプット用のファイルと独立した別のファイルにします。

そして、どのファイルのどのシートを処理対象のインプットやアウトプットにするのかを黄色いセルに書き込みます。

「処理開始」ボタンを押すと、「売り上げ表.xls」ファイルの「東京本店」シートと、「売り上げ表.xls」ファイルの「大阪支店」シートから必要なデータを読み込みます。

処理を行うファイルが、インプットやアウトプットのファイルと独立しているため、後に別のインプットファイルに対して似たような処理を行いたいという場合に、この処理のファイルを流用して新しい処理を作ることができます。
読み込んだデータを計算するなりして、その結果を「集計結果.xls」ファイルの「結果一覧」シートに書き込みます。

  • ×:データがあるァイル内にVBAのプログラムの処理を埋め込む
  • 〇:VBAの処理を埋め込んだファイルをデータの書かれたファイルと独立させる

ちょっと説明が難しかったかもしれませんね。

言いたかったことは、Excelのプログラミングで表を編集するときは、もとの表を直接更新せずに新しい表を作って書き込みましょう、ってことです!


エクセルプログラミング初級勉強会

少人数制の勉強会を毎月行っています。

4/20(土)秋葉原、4/28(日)横浜
横浜や東京で毎月やっています。3時間の勉強会で5000円。
クイズ形式で教えるなど、初心者向けにの夫をしています。詳しくはこちら