アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル初心者です。会社の請求書フォーマットを作るのですが複雑で困っています。
Excel2013を使用してます。

Sheet1に受注リストとして、仕事を

・・・・・・・・・・・・・・・・・・・・・・・・・
日付  品名      単価   数量  金額
----------------------------------------------------------------------
9/1  ○○デザイン費  ○○○円 2点   ○○○円
9/2  ▲▲デザイン費  ▲▲▲円 1式   ▲▲▲円
9/3  □□デザイン費  □□□円 3点   □□□円
・・・・・・・・・・・・・・・・・・・・・・・・・

のように依頼された順に打ち込んだシートがあり、
Sheet2には請求書フォーマットを作成しました。

そこで質問なのですが、
リストの内容を仕事ごとに請求書に反映するにはどうしたらよいのでしょうか?

請求書1枚につき1項目、つまり
9/1  ○○デザイン費  ○○○円 2点   ○○○円
の内容は請求書1(Sheet2)へ、
9/2  ▲▲デザイン費  ▲▲▲円 1式   ▲▲▲円
の内容は請求書2(Sheet3)へ、
9/3  □□デザイン費  □□□円 3点   □□□円
の内容は請求書3(Sheet4)へ、自動的に入力されるようにしたいのです。

必要な要素として、

1. Sheet1のリストの項目が増えるたびに自動的に請求書(Sheet2)をコピー&末尾に移動
2. 新たにできた請求書(Sheet3以降)へSheet1に追加した内容が反映される
3. もし可能なら新たにできたSheet名を請求書1、請求書2、請求書3と連番にしていきたい

といったようなことが出来たらなと思っています。

最初から請求書を大量に量産しておけばこんな複雑なことをしなくて済むのでは?と思いますが
空白の請求書の印刷などの事故を防ぐために出来ればその都度新規で請求書を作成したいです。

まったくの初心者なので、出来ること出来ないことがいまいちわからずこのような質問になりましたが、上記1.~3.の段階を踏まずとももっとスマートな方法があればお教えいただけると助かります。

よろしくお願い致します。

質問者からの補足コメント

  • 早速返答ありがとうございます!
    Excelでそんなことが出来るなんて、目からうろこでした!fujillinさまにご提案頂いた「請求書シートは印刷時のフォーマットとして1つだけ存在するように」したいと思います。

    そこで重ねて質問なのですが、
    >請求書シートに(例えば1行目)ID(または行番号)の入力欄を設けておいて、その内容に該当する項目が自動的に請求書内の必要な各項目に反映されるように、あらかじめ関数式を設定しておきます。

    添付画像左側がリスト、右側が請求書の一部分です。この関数式をいろいろ試してみたのですがうまくいかず…。当てはまる関数式をご教示頂けますか?

    >「順にID欄の値を変えて印刷する」といったマクロを作成すれば対応が可能

    関数式がわからなかったのでここまで到達していないのですが、こちらもご教示頂けると幸いです。

    宜しくお願いいたします!

    「【エクセル】同じブック内で仕事ごとに別の」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2017/09/27 23:59

A 回答 (2件)

No1です。



画像を添付いただきましたが、残念ながらほとんど読めません。
位置などが変わっても要領は同じなので、以下の仮定のもとにサンプルとして回答しておきます。

仮定してた内容は、
受注一覧のリストがあるシートの名前は「受注リスト」で1行目はタイトル、2行目から実際のデータが記入されているものとします。
リストのA列は、重複することのないID(または番号など)で、これで各受注項目を特定できる仕組みになっているものとします。(ご提示の例の場合だと単純な連番のため、行番号に変えられるので無くてもよいのですが、そのまま利用することにします)

請求書のフォーマットはもっと読めませんが、ID(番号)を入力する欄がA1セルにあると仮定しました。
表示するサンプルとして、フォーマットシート内のC13セルに品名?(受注シートのC列にある項目)をA1セルの内容に応じて表示するものとします。

フォーマットシートのC13セルに
 =IFERROR(VLOOKUP($A$1,受注リスト!$A$2:$F$100,3,0),"")
の関数式を入力すると、A1セルの番号に応じた値が表示されるようになります。
(対応する番号が無い場合や、A1セルが空白等の場合は何も表示されません)

エクセルのバージョンによってはIFERROR関数が使えない場合がありますが、その場合は
 =IF(ISERROR(VLOOKUP($A$1,受注リスト!$A$2:$F$100,3,0)),"",VLOOKUP($A$1,受注リスト!$A$2:$F$100,3,0))
という関数式にしても同じ結果が得られます。
(ひとまず、100行目までが対象になるようにしてあります)
他の項目に関しても、参照する位置(列)が変わるだけで要領は同じだと想像します。

上の例は、VLOOKUPという、表を参照する時に用いられる関数を利用しているだけですが、VLOOKUP関数の説明は、ヘルプやネットで検索すると数多く見つかると思います。
以下に、解説しているサイトの例を挙げておきますが、ご自身でも検索なさってみてください。
http://kokoro.kir.jp/excel/vlookup-false.html
https://allabout.co.jp/gm/gc/297725/


>マクロを作成すれば対応が可能
>こちらもご教示頂けると幸いです。
マクロはいわば専用のプログラムですので、機能をきちんと決めて作成しないと、役に立つものにはなりませんし、サンプルをもとにすれば他のものが作成できるというものでもありません。

例えば、上の例で関数式がセットできているとして、番号1~3のものを順に印刷するごく簡単な例を示しておきます。
マクロで行っているのは、「A1セルの値を順に変えながら印刷する」という簡単な内容です。

Sub Sample()
Dim i As Long
For i = 1 To 3
Range("A1").Value = i
ActiveSheet.PrintOut Copies:=1, IgnorePrintAreas:=False
Next i
End Sub
    • good
    • 0
この回答へのお礼

迅速な対応ありがとうございました!
画像が読めなかったとのこと、大変失礼いたしました。
具体例を挙げて頂けたので何とかなりそうです!マクロは難しそうですね…。

こちらを参考に作ってみたいと思います。ありがとうございました!

お礼日時:2017/09/29 23:56

こんにちは



使い方をわかっていませんので、いらぬおせっかいかもしれませんが・・・

各請求書をシートにして残しておく必要があるのでしょうか?
というのも、内容的には定型書式に差し込み印刷的に数項目が可変であれば良さそうに思われるからです。
ご質問の通りだと、受注リストが100行あると100シート+αのシート数のブックになることになりますが・・・?

受注リストに必要な内容が集約されているのだと推測しますので、請求書シートは印刷時のフォーマットとして1つだけ存在するようにした方が明快なように感じます。
例えば、受注リストの各行(1行でひとまとまりと思いますので)にIDを振っておきます。
(面倒なら行番号で代用することも可能ですが、他の処理などとの関連で、仕事を区別するためにIDを使っているのではないかと想像しますので)
請求書シートに(例えば1行目)ID(または行番号)の入力欄を設けておいて、その内容に該当する項目が自動的に請求書内の必要な各項目に反映されるように、あらかじめ関数式を設定しておきます。

利用時には、入力欄にIDを入れればその請求書が表示されるという仕組みです。
(1行目の入力欄は、もちろん印刷されないように設定しておきます)
この方法だとシートは2枚あれば良いことになります。

基本的には手操作を念頭に記しましたが、月末などに「受注リスト内で、ある月に相当する請求書だけをまとめて印刷したい」などという場合にも、この仕組みを利用して、「順にID欄の値を変えて印刷する」といったマクロを作成すれば対応が可能になります。

※ ご質問への回答にはなっていませんが、こんな方法でもよさそうな気がしましたので。
  お門違いの場合は、無視してください。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!