- ベストアンサー
エクセルの一行1レコードのDBから、1レコード1葉にレイアウトするには
一行に1レコードのデータが入った100行くらいのエクセルの表があります。(これはアンケート結果の表です。)1レコードには数10個のフィールド(アンケートの質問番号Q1~Q.XXに対する回答)があり、右に送っていかなければ、最後まで見えません。またフィールドによっては比較的長い文章もあります。 そこで、カード型データベースのように、1レコードを例えば1画面に収まるように(または例えばA4サイズに印刷できるように)、レイアウトしたいのですが、どのようにすればよいでしょうか。(1画面やA4サイズは例であって、長文がある場合には、縦に長くなったり、A4が複数枚になったりするのはかまいません) ワードの差し込み印刷でできるのかなぁと想像していますが、やったことがないので、もっといい方法があれば、または差し込み印刷でできるよ、といったアドバイスでもいいのでお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足を見ると判るが、シート上の表示だけか、印刷をしたいのかはっきりしない。前半は表示、後半は印刷とテーマがわかり難い。 かく言うのも、表示だけならVBAを使わなくても関数で(下記のように)何とかできるから。 しかし全般的にはVBAが必要で、その技術が伴ってない、課題ではないかな。 >DBから エクセルではDBは大げさです。エクセルの「表」や「リスト」と表現します。レコードも「行」です。 --- データベースのあるシート Sheet1 1葉といっているシート Sheet2 とする。 ー Sheet1の空きセルに 1セル使い、そこにデータの行番号を入れます。 そしてSheet2でシート上の配置は自由なセルに Sheet1での列名と 内容を =INDIRECT("Sheet1!B"&(Sheet1!G1+1)) のように関数式を出したい項目数だけ入れていく。 すると Sheet1 のデータ例が 連番 氏名 問1 問2 自動車保有 1 山田 はい いいえ 3 2 鈴木 いいえ いいえ 1 とすると Sheet2 (Sheet1のG1に連番1を入れると) 結果見た目(レイアウトは例示) B列 d列 B3とD3 氏名 山田 B5とD5 問1 はい B7とD7 問2 いいえ B9とD9 自動車保有台数 3 ーー B列は値が固定なので手入力する D3の式は =INDIRECT("Sheet1!B"&(Sheet1!G1+1)) D5の式は ==INDIRECT("Sheet1!C"&(Sheet1!G1+1)) 以下同様。 ーー G1を2に変えると 氏名 鈴木 問1 いいえ 問2 いいえ 自動車保有台数 1 に変わる。 ーー 印刷は 手作業か VBAで無いと出来ない。関数では出来ない。 ボタンでも作ってクリックすると Range("A1:F20".PrintOut を実行するようにする。 == VBAを本格的に使えば、クリックした行の明細を上記のように出したりできる。
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
B2に =INDEX(Sheet1!$1:$65536,A$1,ROW(A1)) の式を利用してみてください 3行目の 1列を表示したいセルには =INDEX(Sheet1!$1:$65536,A$1,1) 2列目を表示したいセルに =INDEX(Sheet1!$1:$65536,A$1,2) 3列目を評したいセルに =INDEX(Sheet1!$1:$65536,A$1,3) ・・・・ と入れていきます。 INDEX関数のHELPを参考にしてみてください。 もしA列に管理番号などありましたら、 入力規則のリストとVLOOKUP関数も応用できます。
お礼
改めてありがとうございます。 ご教示の方法でできそうですね。理解できました。
- hallo-2007
- ベストアンサー率41% (888/2115)
たとえば Sheet1にデータがあって 別シートのA1に表示したい行番号(例えば3)を入れたとして B2に =INDEX(Sheet1!$1:$65536,A$1,ROW(A1)) 下フィルしておくと 3行目のデータが縦に表示されますが、この様なことでしょうか?
お礼
ありがとうございます。 縦にならべるのでなく、できるだけ自由なレイアウトで構成したいのです。 実例はアンケート結果なのですが、3行目のデータ一覧 ------------------ | (Q1) (Q2) (Q3) | (Q4) | (Q5) (Q6) | | | (Q7) のようなかんじで、4行目、5行目・・・100枚目を 紙をめくるように画面で見えるか、印刷をしたいのです。
お礼
回答ありがとうございます。 ご指摘の通り、画面に見えたら、印刷できるだろうくらいに考えておりましたので、曖昧だったと反省します。 表示はご教示いただいた方法でできそうです。ありがとうございました。