• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで注文書を印刷したい。)

エクセルで注文書を印刷する方法

このQ&Aのポイント
  • エクセルを使用して注文書を印刷する方法について教えてください。注文すべきデータはSheet1にあり、注文書のフォームはSheet2にあります。
  • セルA1から始まるデータには仕入先コード、仕入先名、商品コード、商品番号、品目名、単価、注文数が含まれています。注文書の明細行は7桁です。
  • 仕入先コード001と050の注文書を連続して印刷する方法を教えてください。

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

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

こういう問題はVBAでやるべき課題である。 ーー 説明も大変だが、関数で途中まではやってみる。じっくり考えてみてください。 仕入先コード順に並んでいるのが大前提。 ーー 例データ Sheet1 A-H列 H列は作業列 仕入先コード 仕入先名 商品コード 商品番号 品目名 単価 注文数 キー作業列 1 田中建材 A111 A001 セメント 100 10 00101 1 田中建材 A112 A002 砂 200 50 00102 1 田中建材 A113 A003 砂利 300 20 00103 50 鈴木塗料 F555 F051 壁塗料 500 10 05001 50 鈴木塗料 F556 G210 フィルム 100 15 05002 ーー H2に =TEXT(A2,"000")&TEXT(COUNTIF($A$2:A2,A2),"00") と入れて下方向に式を複写。 結果上記H列。 この例では、999社、請求は1社9件以内の仕組みとしている。9999や99などに変えることは出来る。どう変えたらよいかわかりますか? ーーー Sheet2 B3:E10 仕入先コード 仕入先名      3行目 1 田中建材           4行め 請求件数 3           6行目 商品コード 商品番号 品目名   以下9行明細 A111 A001 セメント A112 A002 砂 A113 A003 砂利 D4 田中建材 =VLOOKUP(B4,Sheet1!$A$1:$B$100,2,FALSE) D6 請求件数 =COUNTIF(Sheet1!$A1:$A$100,$B$4) C8 商品コード =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),1)) D8 商品番号 =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),2)) E8 品目名 =IF(ROW()-7>$D$6,"",INDEX(Sheet1!$C$1:$E$100,MATCH(TEXT($B$4,"000")&TEXT(ROW()-7,"00"),Sheet1!$H$1:$H$100,0),3)) 最後の引数だけ1->2->3と変わるだけ。 単価、注文数は長くなるので省略。類推のこと。 C8:E8を下方向に式を9行複写 結果 上表のとおり。 B4セルの仕入先コードを50 に変えると 仕入先コード 仕入先名 50 鈴木塗料 請求件数 2 商品コード 商品番号 品目名 F555 F051 壁塗料 F556 G210 フィルム ーーー 問題は明細数には限りがある。超えたときどうするか。 仕入先コードを1->50-->・・と変化させつつ、印刷をしないとならない。 これは自動的にやるには、VBAの世界です。 == 以上関数では、相当複雑で、十分で無いことがわかったでしょう。VBAを勉強してください。 VBAでやればもっとすっきりプログラムが組める。

K-19New
質問者

お礼

ありがとうございます。もっとVBA勉強しなければとおもいました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで同一のデータを抽出して横並びに

    A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  ccc     4 bbb      12  ddd     6 ccc     10  aaa     22 ddd     6   eee     10 eee     5   bbb     7 fff       8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  aaa     22 bbb      12  bbb     7 ccc     10  ccc     4 ddd     6   ddd     6 eee     5   eee     10 fff       8 kkk 7 kkk 9 lll 4 宜しくお願い致します。

  • エクセルで異なるシートから共通のものを取り出す

    いつも参考にさせていただいています。 エクセルであるブックに2つのシートがあります。 シート1・2とも項目は共通で下記の通りです。 A B C (商品番号)(商品名)(単価) シート1には5000品目、シート2には3000品目入っていると仮定します。 行ないたいのは新規にシート3を作り、シート1の商品番号をキーとしてシート2を見に行き、シート2にあればシート1の商品番号・商品名・単価をシート3に書き出していきたいのです。 アドバイスの程、宜しくお願い致します。

  • エクセルで仕入帳を作成

    エクセルの初心者です。 現在、MS Office2007のexcelで仕入帳の作成をしています。 各シートごとに仕入先の商品のやりとりを出しています。仕入先のシートは全部で7つあります。 さらに、別シートにて仕入商品の平均単価を出したものを作成しております。 その平均単価を出しているシートについてなのですが。 画像のように、各シート(仕入先)で購入した商品の月毎の単価を出そうと試みているのですが、 単価平均のシートのセルB4に =SUMIF(A!$C5:$C1000,"1",A!$F5:$F1000)/SUMIF(A!$C5:$C1000,"1",A!$D5:$D1000) というような数式をいれてます。 これを、同じシートのセルC5に入力する場合は数式のA!をB!にひとつずつ手入力で変更しなければならないのでしょうか? また、B5に入力するセルも"1"を"2"にひとつずつ手入力で変更するのでしょうか? まとめて変更する方法、もしくは数式自体変更したほうがいいのか 大変お手数ではありますが、ご教示よろしくお願いします。

  • excel 商品リストにて 商品名を入力→単価自動的に表示

    商品リストを作成してます シート1に商品リスト、シート2に単価表を作成してます 商品リストAセルに日付、Bセルに商品名、Cセルに数量、Dセルに単価、Eセルに小計、Fセルに仕入先とします。 各商品にコードを指定するのではなく ダイレクトに、商品名で反映?です 商品名と数量を入力すると、単価→小計が出せる数式にしたいのですが 力不足のためご質問させていただきます VLOOKUPを使用してかな?と試みてはみました・・・・・・ 最終的には、商品ごとに1カ月の合計を出したいのですが どなたかお解りの方がいらっしゃいましたらお教えくださいますよう お願いいたします 質問の内容やわかりにくいところがありましたら 申し訳ありません どうぞよろしくお願いいたします

  • Excelでの複数シート間での検索

    2つのシートがあり、 シート1 商品コード 商品名  単価 100    A    50 200    B    70 300    C    80 シート2 商品コード 倉庫  在庫数 100   東京   10 200   東京    5 300   東京    2 200   大阪  100 300   大阪   70 となっています。 目的は、シート2の商品コードをキーとし、シート1の商品コードを検索し、単価を引っぱってきたいのです。 シート1に該当する商品コードがなかった場合は単価は0としたいです。 どのようにしたらよいか、アドバイスいただきたいのですが、よろしくお願いいたします。

  • vlookup関数についてですが。

    こんにちは。 仕事で使う注文書をエクセルで作っています。 sheet1が注文書本体。sheet2が商品一覧(データベース形式)で左からコード番号(5桁)、商品名、内容量、単価などと並んでいます。 問題は、注文書のsheet1のコード番号を入力する箇所が、セルが5つ横並びで、1セルに1文字づつ入れるようになっています。 そこで、考えたのが注文書の5桁のコード番号を取得するセルを設けそこに(=D18&E18&F18&G18&H18のようにして)5桁のコード番号を取得、そのコード番号に対応するセルをsheet2の商品コードから抜き出し、その横の商品名を、sheet1注文書の商品名をN18に返すようにしました。(=IF(I18="","",VLOOKUP(I18,Sheet2!A2:E400,2,FALSE)) しかし、N18に返ったのは、#N/Aでした。 なぜでしょうか? どのようにすれば、N18に商品名を返すことが出来るでしょうか?

  • エクセル データ反映の方法

    商品名と商品コードが記入してるシートがあって、別シートには注文書があり たとえば 注文書のA1に商品名を入れると自動で B1に商品コードが 入るようにしたいのですが。 どうしたらできるでしょうか。教えてください。よろしくお願いします。

  • 再)excel2000VBAで用紙の上半分部分のみ連続印刷する

    ここで教えていただいた、コードを実行したところ見事連続印刷できましたが、シートの上半分が10枚に印刷されます。10枚だと用紙がもったいないので、2シートづつA4で5枚に収めて印刷したいです。それにはどうしたらよろしいか。ご教示お願いします。 Sub TesSample() Dim mySh As Variant '請求書一括印刷 mySh = Array("AAA", "BBB", "CCC", "DDD", "EEE", "FFF", "GGG", "EEE", "FFF", "GGG") Worksheets(mySh).Select Worksheets(mySh).PrintPreview Worksheets("hyousi").Select End Sub

  • EXCELで注文書作成

    シート1に顧客マスター「A1にコード・A2に顧客名」、 シート2に商品マスター「A1にコード・A2に品名・A3に上代・A4に発売日」、シート3に受注表「A1顧客コード・A2顧客名・A3商品コード・A4品名・A5上代・A6発売日」が入っています。 倉庫に出荷依頼をする際は、1顧客に1枚の用紙でFAXにて指示します。 今やりたいのは、出荷のタイミングでどこかのセルに発売日を入力したら、該当するものが1シートに1顧客分ごと転記されるシステムを作りたいと言うことです。

  • 表の結合の仕方

    お世話になります。 このたび今後の業務に必要な為、SQLを勉強することになりました。そこでこのような問題が出たのですがどうも理解できません。 【商品マスタ】 商品コード 商品名  単価 0001    ボール  100 0002    バット  200 0003    グローブ 300 【仕入先マスタ】 仕入先コード 仕入先 001      A 002      B 003      C 【トラン】 購入番号  商品コード 仕入先コード 数量 1      0001    001      1 2      0001    002      2 3      0001    003      3 4      0001    001      4 5      0001    002      5 6      0002    003      6 7      0002    001      7 8      0002    002      8 9      0003    003      9 10      0003    001      10 11      0004    004      20 上記の商品、仕入先、トランのテーブルから以下のように出力をするものです。 商品コード、商品名、仕入先コード、仕入先名、数量、単価、金額 0001 ボール  001 A    5 100  500 0001 ボール  002 B    7 100  700 0001 ボール  003 C    3 100  300 0002 バット  001 A    7 200  1400 0002 バット  002 B    8 200  1600 0002 バット  003 C    6 200  1200 0003 グローブ 001 A    10 300  3000 0003 グローブ 003 C    9 300  2700 0004 (null)  004 (null) 20 (null) (null) ネットを見てもいまいちピンと来ず行き詰っています。ヒント等ありましたらよろしくお願い致します。

専門家に質問してみよう