• ベストアンサー

Excelで毎月の請求書の印刷をしたい

いろいろ過去ログをみたのですが、同じような質問があったのですが 作業の中身が若干違うので、別途質問をさせていただきます。 現在、Excelで顧客管理を行っており、 A列   取引月 B列 顧客名 C列 商品カテゴリ D列 商品名 E列 商品数 F列 金額 G列 備考 というようにしております。 シートは、月ごとにわかれていて 平成21年10月、平成21年11月とシートが1年分あります。 ひとつのファイルが1年分となります。 そのブックの中に、別シートを請求書の雛形にしています。 シートのひとつづつ違う内容なのですが シートを指定して、そのシートにある顧客はすべて印刷する ような形をつくれないかを考えております。 できればマクロではなく関数だけでやりたいなと思っています。 イメージとしては、VlookUpかなんかで、請求書雛形のシートに、顧客管理月のシートのリンク?先が書いてあるのでそこだけ毎月シートの名前に変更すればできるんじゃないかとは思っているのですが、やり方がいまいちわかりません。 お力をお貸し下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

Googleで「imogasi 請求書」で照会すれば、私の回答に私のアイデアが出ている。 >作業の中身が若干違うので 私も多数回答している。それらの類似質問で類推を働かせることが出来ないようでは、質問の回答を読んでも仕様がない。まだ質問者は そこまでエクセルの経験が及んでないということです。本件も丸投げ質問です。 ーー 私のやり方は 関数とVBA(極く初歩のもの数行)を使うものです。 関数だけでは絶対印刷は出来ませんから、その方面のことを考えないように。 雛形のシートで印刷しない範囲に1セル考えて、そこに今から印刷するデータのシート名を打ち込みます。仮にX1セルとします。 もうひとつ、行指定するセルを1つ設けます(セルY1とする)。データが2行目から始まるなら2と入れて置きます。 (1)INDIRECT関数の利用 雛形のシートに顧客名セルに =INDIRECT(X1&"!B"& Y1) と入れます。これでX1に指定したシートのB2セルの氏名が、雛形の 氏名を出すセルに出ます。雛形の氏名以外のセルにも、同様の式を設定してください。BがD(商品名のセル)などに変わるわけです。 これで第2行目の顧客宛の請求書データのセルが完成します。 あとはX1の示す行番号数字を1づつ変化(増やして)させて、印刷し、それを行数分繰り返します。 (2)自動印刷のVBA 標準モジュールに Sub test01() For i = 2 To 43 '例として43-1人分の意味 Range("Y1") = i Range("A1:J25").PrintOut '雛形の印刷範囲がA1:J25と仮定 Next i End Sub この部分はエクセルVBAの入門の本(またはエクセルVBAのWEB記事)を読んでください。 Sub End For Next PrintOut セルに値をプログラムで設定 など ーー 別の月を印刷する場合はX1の値をその月のシート名に変えます。 各シートの最終行はとりあえず目視で変えてください。 普通はプログラムでしますが、一遍に知識を詰め込まないよう略します。

ritzkun
質問者

お礼

丁寧な回答ありがとうございました! やはりVBAでないとできないのですね・・・ ちょっと不安ですが参考にさせていただきます。 ありがとうございました!

その他の回答 (1)

  • nori_007
  • ベストアンサー率35% (369/1048)
回答No.1

希望する回答ではありません。申し訳ありません。 ご希望の作業はエクセルで無く、データベースソフトの方が向いています。 データベースソフトと言うこと、アクセスをイメージし、何だか良く分からないと言うことになることが多いと思いますが、お勧めはファイルメーカーです。 興味を持って検討して頂ければ幸いです。 ファイルメーカーで有れば、請求書のひな形(レイアウト)を作れれば、後は毎月必要項目を入力(レコードに入力)し、印刷すれば請求書が完成。 必要に応じてエクセルのように一覧で閲覧することも可能。 今あるエクセルのデータをそのまま読み込める(請求書雛形のシートは出来ないと思います) ファイルメーカー http://www.filemaker.co.jp/

ritzkun
質問者

お礼

早速回答ありがとうございました。 filemakerは検討したことがありましたがDBという壁に ちょっと足踏みしていました。 Filemakerにしようと思います。 ありがとうございます。

関連するQ&A

  • EXCEL 請求書を発行したいです

    EXCEL2010で、 顧客数分のシートが有り 概ね100位  (シート名は便宜上"1" "2" "3" ・・・と数字です) 各シートには顧客名と顧客毎にレンタルしている商品の一覧表があります。 顧客ごとに商品の数が違い 1項目の場合もあれば 10項目ある顧客があります。 毎月60/100位の顧客に請求書を発行していますが、 上記シートのデーターを元に決まった書式の(EXCELです)請求書を出力したいです。 請求書の商品一覧欄に各シートの商品を入れたいのですが、 請求書上は、商品数+1行 位で収めたいのです。 現在は、各シートがそれぞれの顧客の請求書になっていて、 毎月商品を修正 印刷して請求書を出していますが、 頻繁に商品の追加、削除があり その都度 行を追加・削除しております。 又 追加削除に伴い並べ替えも実施しています。 計算式が入ってあるセルが中にあるので 行を追加・削除することで、 再度 確かめ算をする必要があり、この作業が現在負担になっております。 入力作業は、一度の作業で、一覧と請求書は、 別にできないかと考えたのがとどのつまりです。 何か良い方法ございませんか? VBAでもマクロでも結構です。 ご教授願います。

  • エクセルの請求書の作り方

    毎回苦戦しているので良い方法があれば教えて下さい。 シート1に必要なデータを投入。 シート2に請求書&納品書の雛型。 シート1の列1をシート2の納品書の1に シート1の列2をシート2の納品書の2に という形で作りたいのですが 毎回手入力でリンクさせてるんですが たびたび商品が変わったり減ったり増えたりで 苦戦してます。 アクセスで作れば簡単なのはわかるんですが 会社の環境でアクセスが使えません。 おわかりになる方、どうぞよろしくお願い致します。

  • エクセルの数式を教えてください。

    請求書内訳を作成しているんですが、 どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。 ■Sheetの詳細 Sheetは2種類あります。 Sheet1:請求書内訳 (顧客名、契約金額、合計金額)*顧客へ送るもの。 Sheet2:顧客名のコード表 (顧客コード、顧客名、契約金額) ■したいこと 「顧客コードを入力すると、顧客名と契約金額が表示される仕組み」を作りたいのです。 VLOOKUPを使ってみたのですが… Sheet2のデータを参照し、Sheet1の顧客名欄に顧客名を表示することはできましたが、 Sheet1へのコードを入力により、Sheet1へデータ(顧客名)を表示させる(Sheet2より引き出す)ことができませんでした。 *Sheet1の顧客名欄で使用した式はこちらです。 =VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) 説明が分かりにくくて申し訳ありませんが、Sheet1へのコード入力のみで、 Sheet2からSheet1へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

  • データー表から別のシートに転記

    いつもお世話になります。 WINDOWS7 EXCELL2010 です。 データーを記入したシート「入力」から会社別のシート「請求書」に転記したい。 シート「入力」 1月~12月迄、C /G列を除くA~F列には手入力しています。 C2 =IF(B2="","",VLOOKUP(B2,顧客管理,2,FALSE)) & " " G2 =IF(F2="","",E2*F2) シート「請求書」 月初~月末 の月毎に請求内容を「入力」シートより参照図のように転記したい。 参照図でいうと 10月のみにまとめたい。 この請求書は 例えば A1 に 「0030」と入力すると A1 0030 A2 郵便番号 =" "&IF(A1="","",TEXT(VLOOKUP(A1,顧客管理,4,FALSE),"〒000-0000")) & "" A3 会社名 荒川商店 =" "&IF(A1="","",VLOOKUP(A1,顧客管理,3,FALSE)) & "" 当然のことながら A1 に 0041 と入力すると 「春日南九(株)」の請求書に早変わりし、 D15 E15 F15 G15  10/20 JF 250 4  という具合になればありがたいです。 御指導のほどよろしくお願いします。

  • エクセルで2つの表を見比べる

    上手く表現出来ずに変なタイトルになってしまいました… sheet1に顧客全員の名簿があるとします B列には顧客の氏名、C列には会員のランク(3種類のランク分けがしてあります) という名簿です。 sheet2にはある商品を購入した購入者名簿があります。 D列に顧客の氏名、その他の列には住所などが入力してあります。 (順番は購入日順なので、バラバラです。) sheet2の購入者名簿に名前のある顧客の氏名を sheet1の顧客全員の名簿から探し、C列の会員ランクを 『上得意』と変えたいのですが関数などを使って 簡単に出来る方法ってありますか? 会員数が6000名、商品購入者が200名くらいと 数が多いので1件1件検索すると時間がかかります… VLOOKUP関数なんかで出来たかなと思ったんですけど 勉強したのがだいぶ前なのですっかり忘れてしまいました。 詳しい方、ぜひいい方法を教えてください。

  • エクセルのVLOOKUP関数について

    エクセルのVLOOKUP関数を使用しての集計に関する質問です。 以下の例のような場合の関数が分からず本当に困っております。 どなたかご享受いただけたら幸いです。 よろしくお願いいたします。 毎月サポート費としてお客様ごとに定額が振り替えられ、その集計表を作成しております。 その際振替に使用するプランが2パターンあり、その月どちらのプランになるかは月によってまちまちです。 (同じお客様でも3月はパターン1、4月はパターン2だったりします。) また、振替日は使用するパターンによって異なります。 SHEET1に、 A列 B列 C列 D列 顧客名 金額 振替日 パターン名 という表があり顧客ごとの過去2年分の振替履歴が、1000レコード程並んでいます。 SHEET2でSHEET1の月ごとの集計を出そうと考えております。 表自体は月ごとに分けて作成したいので、表の上部に該当期間をつけます。下記のような感じです。 B2セル C2セル D2セル ○月 開始日 末日 (ex2月) (ex.11/2/1) (ex.11/2/28) A列:顧客名 B列:パターン名 C列:振替日 D列:金額 と並べ、顧客名ごとに、その月のパターン名・振替日・金額を集計したいです。 金額に関しては、SUMIFS関数、振替日に関しては使用パターンさえ出せれば、IF関数で出せると考えています。 パターン名のところでつまづいてしまっています。 行いたいこととしては、SHEET1のA列からD列(顧客名からパターン名まで)の範囲で、顧客名が一致したときに、振替日を抜き取り、振替日がC2(月初日)より大きく、かつD2(月末日)より小さいときのパターン名を表示させたいです。 (1)---------------------------------------------------- =IF(VLOOKUP(A3,sheet1!$A$2:$D$1000,3,FALSE)>$C$2,IF(VLOOKUP(A3,sheet1!$A$2:$D$1000,3,FALSE)<$D$2,(VLOOKUP(A3,sheet1!$A$2:$D$1000,4,FALSE)),"")) といれると、表示されるきちんとパターン名が表示されるセルと空白が返ってきてしまうセルがあります。 空白が返ってきてしまうセルは、双方の顧客名の最後の1文字を消す、スペースを入れる、など何かしら手を加えるときちんと表示されます。 ------------------------------------------------------ その他、VLOOKUP関数、IF関数、ISNA関数などを組み合わせて色々と試してみましたが期間がうまく指定出来ていないようで、当月に振替履歴のない顧客の欄にもパターンが返ってきてしまいます。 下記を教えていただきたいです。 (1)(1)のような状態になる理由と解決法 (2)この場合に使用するのに最適な式 説明が長くなり、またうまく状況を説明できず申し訳ございません。 本当に困っています。ご回答よろしくお願いいたします。

  • ExcelのVBAについて

    ExcelのVBAについて VBA全くの初心者です。 以下のような処理を行いたいのですが、どなたかご教授をお願いします。 以下のように支店(1)~(3)のシートがあります。 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、   一致しない行を不一致データシートに出力する もう一つ別のマクロで、 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、、   一致する行を一致データシートに出力し、D列に対象データがあるシート名を表示する   ※可能でしたら、E列に対象データがある行番号も表示する -------------------------------- シート名:支店(1) A      B     C 商品No   商品名   備考 011    商品A   備考A 009    商品B   備考B 015    商品C   備考C -------------------------------- シート名:支店(2) A      B     C 商品No   商品名   備考 008    商品A   備考A 023    商品B   備考B 004    商品C   備考C -------------------------------- シート名:支店(3) A      B     C 商品No   商品名   備考 007    商品A   備考A 033    商品B   備考B 018    商品C   備考C -------------------------------- シート名:入力シート A      B     C 商品No   商品名   備考 ※ここに複数行入力する -------------------------------- シート名:不一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される -------------------------------- シート名:一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される

  • エクセルで流し込み印刷したいのですが

    エクセル2000とエクセル2002を持っています。 sheet1には実際に印刷したいレイアウトのフォームがあり、sheet2に顧客一覧がある場合、sheet2の各行をsheet1に流し込みながら印刷することはできないでしょうか。 sheet1は契約書の雛形で1件1枚の単票となっています。 sheet2は、列A.ID、列B.会社名、列C.担当者名、列D.契約開始日、列E.契約完了日、列F.・・・・となっていて、 各列の内容をsheet1の所定の位置に配置して複数枚一度に印刷したいわけです。 毎月の作業なので簡略化したいのです。 エクセルで出来るのか、またはもっと簡単に実現する方法を教えていただけると助かります。 ACCESSやWORDも持っています。 よろしくお願いします。

  • エクセルで請求書を作りたい!

    エクセルで請求書を作りたいのですが、シート1に請求書のテンプレートを作成した状態で、シート2とシート3に商品リストを作成してあります。  そこで、シート1の請求書の欄に商品番号と商品名の欄があるのですが、商品数が8000もある上に、複数の商品の発注が予期されるため、いちいち商品名を入力したくありません(面倒くさがりなので…。)そこで、シート1の商品番号欄に商品番号を入力することで、自動で商品名がシート1の商品名欄に反映されるような、関数又はマクロの設定の仕方を教えてください。  文面を見ると初心者であることがわかると思いますが、出来るだけ詳しくお願いいたします。

  • エクセルにてこのような抽出はできますか?

    エクセルにてこのような条件抽出(?)はできますでしょうか? 例えば下記のような売上データーがあります。 A列 売上月(4月~3月) B列 顧客名 C列 商品名 月別の売り上げデーターが毎日記入されます(1年間)。 1万行以下には全顧客名のリストが記入されています(例えば500社)。 この全顧客500社の内、売上の上がっていない顧客はどこなのかを抽出することはできますでしょうか? 売上データーを毎日記入することで、売上げのある顧客は分かりますが、売上げの上がっていない顧客はどこなのかを調べたいのです。 全顧客500社-4月売上顧客=4月売上げの上がっていない顧客一覧 こんなイメージです。 月単位で未売上の顧客を調べたいのです このようなことは可能でしょうか? どなたかご知恵を拝借できましたら幸いです。 ※1年を通して月別の売上げを記入します。   A     B    C 1   月  顧客名  商品名   2  4月  顧客A  商品A 3  4月  顧客B  商品B 4  4月  顧客C  商品C 5  4月  顧客D  商品D   ・    ・    ・   ・    ・    ・   ・    ・    ・   ・    ・    ・ ------------------------- ※1万行以下に全顧客データーを記入します(必ずしもここでなくても別シートでも問題ありません) 10000 顧客A 10001 顧客B 10002 顧客C 10003 顧客D 10004  ・ 10005  ・ 10006  ・ 10007  ・ 10008   よろしくお願い致します。

専門家に質問してみよう