IT企業の内部や官公庁など、Excelで方眼紙状の帳票を多量に作成する職場がよくあります。昔から紙媒体で扱われてきたモノをそのまま電子化しただけのお粗末な発想のシロモノです。レイアウトしか見ていないため、データ再利用や自動化の事は考えられていません。データ入力ではなく文書作成なわけです。印刷物がPCのモニタの中に入っただけであり、これを電子化と呼んでいいかどうかすら議論が別れるところです。データベース設計に携わった人なら狂気を感じる程のExcelファイルをこれまで多々見てきました。残念ながらIT企業ですら例外ではなくExcelだらけですのでこの状況は当面変化しそうもありません。紙媒体が普通だった時代、ワープロ全盛期の時代、こういう時を生きてきた人から世代交代が起こらなければ逃げられないのが現実です。そこでExcel方眼紙を押しつけられる側で自衛する方法を考えてみました。データ・ビューの分離これしかないと思います。これさえやっておけばかなりストレスは軽減します。押しつけられた壮大なExcel方眼紙はビューです。ビューにデータを直接埋め込むのはやめましょう。大規模なものならデータ・ビュー・だけでなくコントローラ的なものもあって良いと思いますが、ユーザインタラクションなどの制御系や割り込み系はほとんど発生しないので大抵の場合MVCにまでしなくても十分です。やるべきことはデータをビューから分離することです。これなら押しつけられる側で工夫できる余地があります。データはcsvで扱うのが良いでしょう。Excel外部からでもVBscriptで編集しやすかったり、単にシートをエクスポートするだけでテキストとして編集できるキー・バリュー型のデータ構造が出来上がるので便利です。Excel以外のツールでも再利用ができます。押し付けられたブックにデータ入力用シートを作成します。これにキー・バリュー型で入力データを列挙します。DBのテーブルを作成するイメージです。表を用意して左にキー、右にデータを入れていくイメージです。型はstringでもintegerでもなんでも書けますので気にする必要がありません。Excelの型は「セルの書式」なのでビューの役割になるためです。データ入力用シートの方はcsvで保存した際に失われない情報のみ書いていくと考えます。方眼紙シートの方にはデータ入力用シートのセルへの参照式を入力します。キーを検索してバリューを取る式とします。図の”DB”シートを参照しますので単純にこのような参照式になります。=VLOOKUP("キー1",DB!A:B,2)1=VLOOKUP("キー1",DB!A:B,2)つまり方眼紙シート側が持つ機能はビューに限定し、データを一切埋め込まず、参照式だけを埋め込むルールとします。参照式以外のものは方眼紙シートに入力してはいけません。生データに依存するもの以外にも、中間生性となる計算式も排除するべきです。生データに対して何らかの加工を施したうえでビューに表示したい場合は、データ入力用シート側で工夫をしてください。このルールを徹底することでデータ入力用シートは再利用することができます。別の方眼紙シートを使う時にもデータ入力用シートはそのまま活かすことができますし、csv化しておけばツールによる編集や加工、git等でのバージョン管理も容易にできるのではないでしょうか。ちなみにデータシートはブックに埋め込まず外部参照にした方が楽だと思います。職場においてはメール添付でExcelを送るケース等も散見されます。Excelファイル単体で取り扱える方が利便性が高いと考え、ここではブック埋め込みの形で紹介しました。