xls9データベース型の表を作る●メニューへもどる★データベース型とはデータを格納するための表で、「見るため」でも「印刷するため」のものでもありません。ここから必要に応じてデータをコピーしてきて、別の表にまとめて使うためのものです。従って、無駄な罫線など引きませんし、文字の大きさなど不要な書式の設定はしません。1行目は必ず「項目行」とし、1件のデータは1行に並べます。見るため・印刷するための表は、これとは別に作ります。することで、同じデータを元にして様々に形を変えて利用できます。データを分けることによって、印刷用の表も作りやすくなります。★印刷フォームデータを見やすく並べたり、ある形式に印刷するための表をフォームといいます。エクセルで表を作るとき、多くの人は、このフォームから作り始めますが、この表は1件のデータしか入りません。印刷するものしか入れられないので、必要なデータを計算するための式も複雑になってしまいます。これをコピー・貼り付けして再利用する場合も、変更が多くせっかく作ったフォームを壊してしまうことにもなります。データベースの表と印刷フォームの表を分けることによって、再利用の簡単な表が作れるのです。売り上げ台帳というデータベースには、仕入れ原価なども入っていますが、これをデータのベースとして納品書も請求書も作れます。住所録には、家族構成や勤務先などのデータも入れておけますが、これを元に作る葉書宛名印刷には、必要なものだけ持ってこられます。★住所録と葉書宛名印刷の例データベースを印刷フォームにコピー・貼り付けするときに、直接その位置には貼り付けません。受け渡し場所を作って、ここから式で読み込みます。左は、住所録の例です。住所は、後で何行かに分けて使うことを考え、適当な場所で切っておきます。切っておいたものを繋げることはできても、適当な位置で分けるということは、コンピューターには無理だからです。左は、縦書き宛名印刷のフォームです。これは、住所録とは別のシートに作ります。ここでは、見栄えのするように、文字の大きさやフォントなどを指定して、配置も「上詰め」「下詰め」など指定します。問題は、これを住所録からどうコピー・貼り付けするかです。一つずつコピーして貼り付けるのでは面倒です。実は、G1やF1のセルには式が入っているだけで、実際にはフォームの中には貼り付けていません。住所録から必要な1行をコピーし、宛名印刷フォームの欄外(印刷範囲外)のA6から貼り付けます。いう式を入れておきます。(差出人欄は固定なので、文字を直接入れますが)こうすると、A6に別の1行を貼り付ければ、別の宛名印刷が可能になります。A6の行は、データの受け渡し場所に使っています。この場所は、別のシートでも構いません。宛名印刷には番号は不要ですが、これを抜いてコピーするのは面倒なので、構わず1行コピーしてしまいます。受け渡し場所には不要なものがあっても構わないのです。宛名印刷は、一つの例です。データベースを作って、印刷フォームに代入する、という方法は様々なものに応用できるはずです。「見るための表」と「データを格納するための表」を別に作る、ということをマスターしてください。★コピー・貼り付けを自動化するオートマクロを使えば、コピー・貼り付けの作業をマクロ化することもできます。印刷したら次の行へ進むようにすれば、マクロを実行しながら次々にコピーできます。その方法が、「宛名印刷」に紹介してあります。★関数を使って、データを選択するにはvlookupという関数を使えば、データベースから検索できます。検索が有効になるためには、データがソートされている(順番通り並んでいる)こと、検索の範囲を指定することなどの条件が必要です。したデータベースになっていないとvlookupが機能しないこともあります。ここでは、index関数を使う方法を紹介します。=index(範囲,行番号,列番号)で、指定した範囲の中の何行・何列を数字で指定すれば、セルの値が求められます。H6に欲しいデータの番号を入れます。その行の2列目に名前があるので、L1の場所では列番号に2を指定します。以下同様に、O1・N1・M1にもindex関数を入れます。H6に番号を入れると、宛名が変わります。関数を使う方が、マクロの警告がでないので安心感はあります。行番号を入れるのでなく、名前などを入れて検索するには、Vlookup関数を使います。この場合は名前の列が左端(A列)にあること・データベースが名前順にソートされていることが必要です。このファイルはマクロと関数との両方が含まれています。