- ベストアンサー
エクセルで最新データのみ表示させたい
Excel2003を使用しています。 毎日データを入力している表があるのですが、それを月末に最新データのみの一覧表にしたいのです。 A B C D E F G H 日付 店舗コード 店舗名 商品コード 商品名 数量 単価 金額 店舗名・商品名は別シートにコード一覧表があり、そこからVLOOKUPで表示させています。 日付・店舗ごとに小計行を入れています。 件数は3000近くあります。これを商品名ごとに最新のデータ行のみを表示した表にしたいのです。 フィルタオプションの重複データを無視するや集計などやってみましたがうまくいきません。 VBAは書くことは出来ませんが、簡単な修正は出来ると思います。 どういった方法がありますでしょうか? よろしくお願い致します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
No1,No2です。 別案を思いつきましたので、データが日付順に並んで(並び替え)いるとして 作業列に =COUNTIF(D2:D$65536,D2) と入れて下までコピィします。 オートフィルターで作業列が 1 のみ表示させれば商品コード別で 最後のデータが表示されると思います。
その他の回答 (7)
[回答番号:No.6]の訂正 提示式中の「Sheet1!$J36」は「$A2」に訂正します。
[回答番号:No.4この回答への補足]へのコメント、 》 商品名ごとの最下行のものを一覧表示にしたいです。 最初からそう言えば好いものを(^_^) Sheet1 A B C D E F G H 1 日付 店舗コ 店舗名 商品コ 商品名 数量 単価 金額 Sheet2 A B C D E F G H I 1 商品名 日付 店舗コ 商品名 商品コ 商品名 数量 単価 金額 2 Sheet2!B2: {=INDEX(Sheet1!A$1:A$1000,MAX((Sheet1!$E$1:$E$1000=Sheet1!$J36)*ROW(A$1:A$1000)))} ← 配列数式 【注】Sheet2 のF列は(A列の項目と重複しているので)非表示にすれば好い。
お礼
回答ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
下記のように要点を考え、簡略に書き、実例を質問に挙げること。 質問の表現が要領を得ないと思う。 例データ A1:C10 A列 B列 C列 (質問の他の列(項目)などは、質問者が回答の意味を理解して補えばよいことだ) 日付 商品 データ 2009/2/12 a 1 2009/5/4 s 2 2009/4/22 a 3 2009/1/23 d 4 2009/4/25 s 5 2009/4/4 a 6 2009/5/3 s 7 2009/4/23 d 8 2009/2/18 a 9 商品ごとの最新日付行を取るのだろう。 C12:E15(場所は勝手に決めただけ。意味なし) C列 D列 E列 日付 商品 データ 2009/4/22 a 3 2009/5/4 s 2 2009/4/23 d 8 商品列はフィルタオプションで出してくる。 C13は =MAX(IF($B$2:$B$10=D13,$A$2:$A$10)) と入れてSHIFT+CTRL+ENTER同時押し(配列数式) 下方向に式を複写。 E14は =SUMPRODUCT(($A$2:$A$10=C13)*($B$2:$B$10=D13),$C$2:$C$10) 式を下方向に複写。 結果 上記の通り。 配列数式は使いたくないが、使わないと無理かな(使わない回答が出るかも) たまたま課題が質問者には過ぎた課題だったと思う。 ーーー VBAの回答に接しても、丸投げで丸写しにならざるを得ないでしょう。 丸投げは当質問規約違反。もっと問題の性格をつかめるようにならないと、プログラムを組むのは無理と思う。 どういうことを言っているかと言うと 例 最新のデータ行 とは日付シリアル値で一番大きい行を探すにはどうするか。 1行ずつ探すかーー>商品ごとに3000/2ぐらい比較を繰り返すか ーー>もっと良いやり方はないか 一例 ソート法 データを他シートへコピーして、商品別+日付でソートー>商品の変わり目の日付がその商品の最新の行、など色々やり方が有る。 ーー こうなると質問の内容がガラット変わることが判るだろう。 質問文の表現は、質問者の思考過程の進み具合を反映しているから。
お礼
ありがとうございます
》 日付・店舗ごとに小計行を入れています。 ということは、A列は昇順に並んでいますね? 》 商品名ごとに最新のデータ行のみを表示した表にしたい ・ ということは、表示したいデータは商品ごとの単なる最下行のものですね?
補足
そうです。商品名ごとの最下行のものを一覧表示にしたいです。
- popuplt
- ベストアンサー率38% (31/81)
VBAや関数の方法もあると思いますが、操作だけでするのが簡単かな? 一覧表のSheetを全部コピーします。(原本は残す) Sortします。Keyは商品コードで昇順、日付で降順 Excel2007なら[重複の削除]で完成なのですが・・・ Excel2003なので[フィルタオプションの重複データを無視する]でいかがでしょうか? (手元に2003が無いので確認はできません。<(_ _)> )
お礼
回答ありがとうございます。 フィルタオプションではうまくできませんでした。
- hallo-2007
- ベストアンサー率41% (888/2115)
例えばですが、商品名のシートが A B C 商品コード 商品名 とあったとして、C列に(C2)に =MAX(IF(元データ!D2:D1000=A2,ROW(A2:A1000),"")) Ctrl+Shift+Enter で決定して配列関数(式が{}でくくられます) 下へコピィすると、商品ごとに最も下の方に出てきた行の行番号がでます。 INDEX関数と組み合わせれば商品ごとの最も下の行にある単価がでると思います。 D列に =INDEX(元データ!G:G,C2) とかです。 式が理解できたら C列にindex関数とMAX(IF・・・を一緒に記述しても大丈夫です。
- hallo-2007
- ベストアンサー率41% (888/2115)
>月末に最新データのみの一覧表にしたいのです。 >商品名ごとに最新のデータ行のみを表示した表にしたいのです。 質問が良くわからないのですが 商品ごとに月末に近い日付の行のみ表示したい? 事務の仕事だと思いますが、そんな必要があるの? 仕事でよくあることといえば 月単位で 商品ごと(或いは店舗ごと)の数量、金額の合計を出したい という事はよくありますが。
補足
回答ありがとうございます。 欲しいのは最新の単価なんです。商品名が同じでも店舗や日付で違うので。 でも単価のみではなくその行の情報すべてを表示したいので最新データ行のみの一覧表にしたいのです。
お礼
回答ありがとうございます。 シンプルで他の人にも説明するにもわかりやすくて助かります。 何度もありがとうございました。