- ベストアンサー
エクセル関数で指定した日付の売上明細を表記する方法
- エクセル2010を使い、シートAに記されている販売データから指定した日付の売上明細をシートBに表記する方法を教えてください。
- シートAには販売時の日付、品番、数量、単価、販売額が記されています。シートBは最大50行くらいの表記が可能である必要があります。
- シートBの先頭行A1かB1に指定した日付を入力し、A5から品番、B5から数量、C5から金額を表記したいと思っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
今仮に、シート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行目以下に貼り付けて下さい。 以上です。
その他の回答 (4)
- dogs_cats
- ベストアンサー率38% (278/717)
NO2です。 >1行目は表記されますが2行目以降表記されません。 1つの数式で全ての項目を表示出来ますので、CTRL+SHIFT+Enterで配列数式を確定させた後に数式を右方向及び下方向にオートフィルして数式をコピーするだけです。 数式バーで数式は{}で挟まれていますか? 数式を記載して頂ければ、アドバイス出来るかもしれません。
補足
dogs_catsさん 色々ありがとうざいます。 1行目の式ができ、Sheet1の最初のラインがでたので{}を付けたところ表記された内容が消えてしまいました。また、未熟さもありますが2行目以降表記されません。何が悪いのでしょうか? もし、可能であればアドバイスをいただければと思います
- msMike
- ベストアンサー率20% (364/1804)
- dogs_cats
- ベストアンサー率38% (278/717)
配列式です。 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
補足
アドバイスありがとうございます。アドバイスをいただきました式はできたんですが、1行目は表記されますが2行目以降表記されません。何が悪いのかわからず困っています。もし、可能でしたらシート2の2行目からの式はどのように設定したらよいでしょうか?お手数をおかけして大変申し訳ございませんがもう少しお付き合いをいただければ幸いです お手数をおかけして申し訳ございません
- keithin
- ベストアンサー率66% (5278/7941)
推奨:ごく基本的な簡単関数だけで行う シート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で入力する 下にコピーする そのあと右にコピーして完成。 #間違えずに行えばちゃんと出来ます。出来ない時は間違えているのでやり直す事。
お礼
ご連絡ありがとうございます 複数の方からアドバイスをいただき無事解決できました 貴重なお時間をありがとうございました
お礼
KAGAKUSUKISAN ありがとうございます 無事完了しました 本当にありがとうございます