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

エクセル関数で指定した日付の売上明細を表記する方法

このQ&Aのポイント
  • エクセル2010を使い、シートAに記されている販売データから指定した日付の売上明細をシートBに表記する方法を教えてください。
  • シートAには販売時の日付、品番、数量、単価、販売額が記されています。シートBは最大50行くらいの表記が可能である必要があります。
  • シートBの先頭行A1かB1に指定した日付を入力し、A5から品番、B5から数量、C5から金額を表記したいと思っています。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、シートAにおいて「日付」という項目名が入力されているセルはA3セルであるものとします。  又、シートBにおいて指定する日付を入力するセルはA1セルであるものとします。  まず、シートBのB3セルに「品番」、C3セルに「数量」、D3セルに「単価」、E3セルに「合計」と入力して下さい。  次に、シートBのA3セルに次の関数を入力して下さい。 =ROW(シートA!$A$3)  次に、シートBのA4セルに次の関数を入力して下さい。 =IF(ISERROR(1/DAY($A$1)),"",IF(ROWS($A$4:$A4)>COUNTIF(シートA!$A:$A,$A$1),"",MATCH($A$1,INDEX(シートA!$A:$A,A3+1):INDEX(シートA!$A:$A,MATCH(9E+99,シートA!$A:$A)),0)+A3))  次に、シートBのA3セルとA4セルの書式設定の表示形式を[ユーザー定義]の ;;; に設定して下さい。  次に、シートBのB4セルに次の関数を入力して下さい。 =IF(ISERROR(1/(INDEX(シートA!B:B,$A4)<>"")),"",INDEX(シートA!B:B,$A4))  次に、シートBのB4セルをコピーして、シートBのC4~E4のセル範囲に貼り付けて下さい。  次に、シートBのA4~E4のセル範囲をコピーして、シートBのA列~E列の5行目以下に貼り付けて下さい。  以上です。

katsuns
質問者

お礼

KAGAKUSUKISAN ありがとうございます 無事完了しました 本当にありがとうございます

その他の回答 (4)

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.5

NO2です。 >1行目は表記されますが2行目以降表記されません。 1つの数式で全ての項目を表示出来ますので、CTRL+SHIFT+Enterで配列数式を確定させた後に数式を右方向及び下方向にオートフィルして数式をコピーするだけです。 数式バーで数式は{}で挟まれていますか? 数式を記載して頂ければ、アドバイス出来るかもしれません。

katsuns
質問者

補足

dogs_catsさん 色々ありがとうざいます。 1行目の式ができ、Sheet1の最初のラインがでたので{}を付けたところ表記された内容が消えてしまいました。また、未熟さもありますが2行目以降表記されません。何が悪いのでしょうか? もし、可能であればアドバイスをいただければと思います

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.4

以下は Sheet2 における操作です。 1.セル A5 に次式を入力 __=IFERROR(INDEX(Sheet1!B$1:B$1000,SMALL(IF(Sheet1!$A$1:$A$1000=$A$3,ROW(A$1:A$1000),""),ROW(A1))),"") 2.セル A5 を右方へズズーッとドラッグ&ペースト 3.範囲 A5:D5 を下方へズズーッとドラッグ&ペースト 【お断り】提示した式は配列数式です。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.3

配列式です。 Aシート2000行まで入力可能。 Bシートは数式をコピーすれば行数に制限はありません。 シートAをsheet1 シートBをsheet2としています。 sheet2の4行目の項目名は事前にコピペして下さい。 A5式 =IF($B$1="","",IFERROR(INDEX(Sheet1!B$1:B$2000,SMALL(IF(Sheet1!$A$1:$A$2000=$B$1,ROW(A$1:A$2000)),ROW(A1))),"")) CTRL+SHIFT+Enterキーを同時押しで数式バーの数式が{}で囲まれていれば確定されています。 {で囲まれていない場合はA5セル選択し、数式バーにカーソルを合わせた後に上記3キーを同時押し。 配列式 http://office-qa.com/Excel/ex69.htm 絶対参照を使用しています。 絶対列参照も使用していますのでセルアドレスのの$位置で意味が違ってきますので注意下さい。 絶対参照と相対参照 http://www11.plala.or.jp/koma_Excel/contents1/mame1006/mame100601.html

katsuns
質問者

補足

アドバイスありがとうございます。アドバイスをいただきました式はできたんですが、1行目は表記されますが2行目以降表記されません。何が悪いのかわからず困っています。もし、可能でしたらシート2の2行目からの式はどのように設定したらよいでしょうか?お手数をおかけして大変申し訳ございませんがもう少しお付き合いをいただければ幸いです お手数をおかけして申し訳ございません

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

推奨:ごく基本的な簡単関数だけで行う シートAのA列A1に「番号」と記入する B1以右に「日付」「品番」「数量」「単価」「合計」とする A2に =IF(B2=シートB!$B$1,MAX($A$1:A1)+1,"") と記入、以下コピーして埋めておく シートBのB1セルに日付を記入する A5以右に「番号」「日付」「品番」「数量」「単価」「合計」とする A6に =IF(ROW(A1)>MAX(シートA!A:A),"",ROW(A1)) と記入、以下コピーしておく B6に =IF($A6="","",VLOOKUP($A6,シートA!$A:$F,COLUMN())) と記入、右に下にコピーしておく B1に該当する行が羅列される。 #各関数は当然ですが「正しいシート名」を用いて数式を作成する事 推奨しません:中身は判らなくて(自分で出来なくて)イイ人向け シートAのA列からデータを作成する シートBのA1に日付を記入する シートBのA5以右に「日付」…とする シートBのA6に =IF(ROW(A1)>COUNTIF(シートA!$A:$A,$A$1),"",INDEX(シートA!A:A,SMALL(IF(シートA!$A$1:$A$1000=$A$1,ROW(シートA!$A$1:$A$1000),""),ROW(A1)))) と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力する 下にコピーする そのあと右にコピーして完成。 #間違えずに行えばちゃんと出来ます。出来ない時は間違えているのでやり直す事。

katsuns
質問者

お礼

ご連絡ありがとうございます 複数の方からアドバイスをいただき無事解決できました 貴重なお時間をありがとうございました

関連するQ&A