- ベストアンサー
エクセル2003で宿泊カードを作成する方法
- エクセル2003で報告用のシートと宿泊カードを同時に作成する方法を教えてください。
- 現在は報告用のシートと宿泊カードを別々に作成していますが、これを同時に作成したいです。
- 宿泊カードには部屋番号と宿泊者名、人数が反映されるようにしたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
苦労していらっしゃるようで^^; ちょっとお節介させていただきますと、 (私を含めて)質問文を読んだ回答者が言う「レイアウト」と言うのは 「どこのセルにどのように配置したらいいのか?」という事です。 「報告用」「宿泊カード用の集約」「印刷用」と言われても、 今現在のその「構成(どのような作り方をしているか?)」がわかるのは 質問者さん本人だけなのですね。 なので、具体的なアドバイスが出来なくて、回答者が逆に困ってしまいます。 で、なんとなく見かけたキーワードから、 「報告用」の表(シート)から、何か(例えば宿泊者数)をキーにして、 空白以外の行を「集約用」の表に抽出してきて、 この「集約用」の表からリンクして「印刷」してやれば良いのかなぁ。 と軽く考えてみました。 配列関数と言う、なんとなく嫌な感じの機能を使いますが、ご容赦ください。 面倒臭がりなもので、添付図が適当ですがそこもなんとか読み解いて 適宜応用なさってくださいませ。 まず。 図の左側のような「報告用」のシートがあるとします。 (手抜きで)部屋番号と宿泊者数の列しか作っていませんが、 これで「宿泊者数が入っている部屋」だけを抽出したい、と考えます。 右側の表に抽出します。 図では(手抜きで)同じシートに配置していますが、 もちろん別シートにしておく方が実用的には良いと思います。 D1セルには以下の式 =IF(ROW()>COUNT($B$1:$B$9)+1,"",INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9="","",ROW($A$1:$A$9)),ROW()))) と入力し、Ctrl+Shift+Enterで確定します。 コレでエクセルに「これは配列関数だよ」と認識させることが出来、 数式の両端に{ }が付きます。 これを必要分(図では9行目まで)フィルしてやります。 応用しやすいように少しだけ解説を入れると、 「$B$1:$B$9」を変えると、キー項目の範囲を変更できます。 「$A$1:$A$9」を変えると、抜き取ってきたい列を変更できます。 ただし、両方の「行数」は合わせておく方が無難です。 関数の意味などは割愛。必要そうなら別途お調べくださいませ。 E1セル以降は単純なVLOOKUP関数です。 =IF(D1="","",VLOOKUP(D1,A:B,2,FALSE)) これもD列と同じだけ、フィルしてあげましょう。 そうすると、図のような表が二つ出来上がります。 問題は、印刷です。 一番考えやすいのは、「80部屋分、印刷領域を用意」して、 つまり、「印刷用シート」に80ページ分ずら~~~~~っと並べ、 これを「集約した表」にリンクさせるやりかたですね。 レイアウトはわかりませんが、1部屋分で1~10行目まで使っているなら、 コレ×80部屋で、800行までズラ~~~~~っと並べてやる感じです。 図で言うと、印刷用シートのA1セルに「=D2」、同A11セルに「=D3」、 以降、同じ間隔で作ってやりましょう。 「集約した表」には空白行が挟まりませんから、 印刷するときに「データがある行数まで」とページ設定してやればOKです。 図で言うと、本当は8部屋分あるけど、印刷するのは「1P~4Pまで」ですね。 あ、1ページに2部屋分なら、2Pまでですかね。 どちらにしても、これは印刷ダイアログの「ページ指定」で指定できますね。 本当は、印刷用シートに1組(2部屋)分を用意し、 マクロで必要な行数(部屋数)だけ繰り返すようにするのが ファイル容量的に一番良いのですけど。 一応、基本機能だけでも出来ますよ(手間ですが)ってことで参考までにどうぞ。
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
B5サイズの印刷を考えており、その1ページには左側の列の部屋番号を記載する列には2部屋分が記載され、右側の列にも左側と全く同じ形のものを記載することで良いのでしょうか?
補足
うまくつたえきれずにすみません。 お客様に手渡すのはB6サイズのカードです。 プリンタでB6が印刷できないため、B5サイズの用紙に2組分のカードを印刷しています。 カードは2つ折にしており、左半分にチェックアウトの時間や館内案内などの情報が記載してあります。 右半分にお客様の宿泊情報を記載するのですが、一組ごとに変わる部分だけ空欄のセルで結合などしてサイズなどを調整し入力できるように作っています。その変わる部分が部屋番号や、お客様名、宿泊人数等なのです。従業員のなかにはその入力や印刷すらできず、手書きで書き込んでいるような状況です。 そこで、報告用のデータベース的なシート(部屋番号とその部屋に誰が何人で泊まって、単価も記載しているもの)から、別に用意している宿泊カード用のシートに必要な情報だけ(利用する部屋の分だけ)リンクさせ手間を省きたいのです。ワードの差込印刷が一番うまくいきそうなのですが、宿泊カードに図形が入ってしまっているのでそれはどうやらむずかしそうなのです。 駄文すぎて自分でもあきれてしまいますが、宜しくお願いします。
- KURUMITO
- ベストアンサー率42% (1835/4283)
報告用のシートからデータを取り出して宿泊カードにある項目だけを書くことは簡単ですが例えば宿泊カードを印刷するためにはエクセルのシートでの部屋番号や、宿泊者名、人数がどのように配置されればよいのかかよくわかりません。例えば部屋番号1件につき1列で考えればよいのでしょうか?、他の列にも他の部屋番号を並べることが必要でしょうか?などご指示ください。
お礼
ご回答ありがとうございます。 宿泊カードを印刷するためのシートにはB5サイズのページに B6サイズの横書きの宿泊カードを上下に2枚分(さらにB6サイズを2つ折にしてお客様に渡す。2つ折の右側に現在空セルを設け、それぞれお客様名と、部屋番号、宿泊人数を記載するようにしています。)を裁断して使っています。 ですので部屋番号や宿泊者名等は任意のセルへ=で接続したら可能なのですが、そうなると、無駄なページがいくつもできあがってしまいますので、なにか良い方法はないかと困っている次第でございます。 詳しく説明できず、申し訳ありません
- 1025momo
- ベストアンサー率25% (133/524)
「a報告用シート」に入力して「b宿泊カードシート」に 反映したい!って内容で良かったですか~ 私の知る範囲ですが・・・ 「aシート」と「bシート」は同じひな形にしないと いけません。セルの位置も同じにします。 宿泊カードに不必要な項目は入力しなくていいです。 ただ、反映してほしい項目は「a・b」同じセルの位置で。 では、入力の仕方・・・ aシートをクリック(反転しますよ) ↓ Crtl押しながらbシートをクリック(反転しますよね) これで2枚のシートを選択しています。(解除方法は選択シートの上でwクリック) 2枚のシートを選択した状態で、 aシートに入力します。(bシートにも入力されてます) あくまでも、反映について説明しましたので、 カードのサイズまでは・・・
お礼
ご回答ありがとうございます。反映機能について新しく知識を知ることができてたすかりました。 ただ今回は全く別の雛形なので、応用できるか試してみます。 ありがとうございます!
- -9L9-
- ベストアンサー率44% (1088/2422)
データベースソフトを使えばそういうことは基本的機能ですから簡単ですが。 どうしてもEXCELでやりたいなら、Wordと組み合わせて差し込み印刷するのが簡単だと思います。 http://121ware.com/navigate/learn/ug/chotry/007/index.html 毎日新しいファイルとして報告データを作成しているなら、そのデータ一件ごとに対応する宿泊カードのシートをあらかじめ用意しておくのも簡単な方法だと思います。1日最大80件なら80枚の宿泊カードをあらかじめ作っておき、一枚ごとに報告用データと「=」で接続しておけばいいでしょう。ただし保存するファイルが大きくなってしまいますが。
お礼
ご回答ありがとうございます。 私も80枚分の宿泊カードを接続する方法は考えたのですが、 なにぶん空室も多い状況なので、いい方法はないかと考えているところでした。 それでは80枚分の宿泊カードを作るとして、例えば印刷が必要なページにチェックボックスなどを設け、チェックされたページのみ印刷させることはできるのでしょうか?質問ばかりですみません。宜しくお願いいたします。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
今はどうやってんの? 具体的な方法がマッタクワカラン! レイアウトも出さないとお互い時間の浪費、、、
お礼
ご回答ありがとうございます。 なるほど!抽出用にシートをもう一枚作れば希望するものができそうです!駄文長文を読み取ってくださりありがとうございます!それと、回答してくれた皆様、あらためてお礼申し上げます。ありがとうございました!