• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで注文書→請求書を作っていて困っています。)

エクセルで注文書→請求書を自動生成する方法

このQ&Aのポイント
  • エクセルで注文書から請求書を作成する方法を教えていただけませんか?注文書の内容を自動的に請求書に反映させたいです。
  • エクセルで注文書から自動的に請求書を作成する方法を教えてください。現在、数量が入力された品目のみを請求書に表示させたいです。
  • エクセルで注文書から請求書を自動的に生成する方法を教えてください。数量が0の品目は表示させずに、数量が入力された品目のみ表示させたいです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

一例ですが (どちらのシートも項目名が1行目とした場合の式です) Sheet1のF列に作業列を作ります。(空いてる列ならどこでもいいです) F2に =IF(B2>0,COUNTIF($B$2:B2,">0"),"") として必要なだけ下にコピーします。 Sheet2の A2に =IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(1:1),Sheet1!$F:$F,0),1),"") $F:$FはSheet1の作業列を作成した列を指定してください。 として必要なだけ右と下にコピーします。

iori8940
質問者

お礼

kkkkkm さん 早速のご教示ありがとうございました。 初めはセルを結合させていたりしたので、うまくいきませんでしたが、 それに気づいてからはスイスイ出来て、実用出来そうです。 感謝いたします。 本当にありがとうございました。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Sheet1に100行目までの入力を可能にして、数量が0の行をSheet2に書き出します。100行以上入力があれば算式の100を多めに変更してください。 合計も出力していますが、算式ではなく、Sheet1の値です。Sheet2の数値部分の書式は「#,##0_ ;;」としてください。合計行の未入力セルを空白表示する目的です。 Sheet1,Sheet2ともセルA1を基準にしています。実際は違うと思いますが、セルA1を基準に回答通りに作成し、完成したら行・列の挿入、削除で適切な位置に調整してください。 Sheet2:セルA2 =IFERROR(INDEX(Sheet1!$A$2:$E$100,MATCH(LARGE((Sheet1!$E$2:$E$100<>0)*1/ROW(Sheet1!$A$2:$A$100),ROWS($A$2:$A2)),1/ROW(Sheet1!$A$2:$A$100),0),COLUMNS(Sheet1!$A$1:A$1)),"") 長い。この算式をコピーし、Sheet2のセルA2を選択して数式バーに貼り付け、Ctrl+Shift+Enterで登録します。配列数式になります。 上手く登録できたら、セルA2を2行目の列方向に普通にコピーします。2行目がコピーできたら、2行目を下方向に多めにコピーしてください。Sheet1で何行入力があるか分からないので何行でも登録できます。算式は100行目までとしています。 当方、Win10、Excel2010です。

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

「その行で、指定列の値が条件該当の場合、行を詰める(飛ばす)」という関数による技法があればよいのでしょう。 ーー 下記は方法の一例です。 VBAでやれば、何の珍奇な工夫も要らないのだが。 業務にエクセルを(データベース的に)使うなら関数を卒業したら。 例で説明すると A-E列で、A、B列は元データ 他は下記関数で返す値。 柿とキウィは、記入なし(空白)、とする例。 リンゴ 20 1 1 1 柿     1 2 0 梨   2 2 3 2 桃   5 3 4 3 ブドウ 0 4 4 0 みかん 34 5 5 4 キウィ 5 6 0 オレンジ あり 5 7 #VALUE! ーー C2セルの式 =COUNT($B$2:B2) D2セルの式 =COUNTIFS($B$2:B2,"<>0",$B$2:B2,"<>""""") E2セルの式 =IF(VALUE(B2)<>0,MAX($E$1:E1)+1,0) 3通りやってみたが、E列が良さそう。 ーー それで G2の式 =IFERROR(INDEX(A1:A10,MATCH(ROW()-1,E1:E10,0),0),"") H2の式  =IFERROR(INDEX(B1:B10,MATCH(ROW()-1,E1:E10,0),0),"") 結果 G列、H列 リンゴ 20 梨   2 桃   5 みかん 34 ーー 他シートに結果データを持って来たいときは、上記各関数式において、元データの「シート名!」をセル範囲に被せて式を作ってください。 === 一種の、条件による関数式での,「抜出し問題」で、ワーク列(中間列)を使わないと、式が複雑になる。 過去にもこのタイプの質問は(絶えることなく)時々あり、複雑な式の組み合わせの回答が出ている。 Googleで「Excel 関数 条件による抜出」などにより照会を勧める。 Excel関数はこの手の課題に適してない。

iori8940
質問者

お礼

imogasiさん ご教示ありがとうございました。 先に教えてくださった方の方法がとてもシンプルでしたので、 そちらを採用させていただきました。 お忙しいところお手数をお掛けし、誠にありがとうございました。

関連するQ&A