[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『キー列が重複する場合は最新の日付からデータを求めたい』(シロックス)
【日々データ】 A B C D 1 管理ナンバー 商品 価格 日付 2 A-0004 きゅうり 160 2017/7/20 3 A-0005 なす 150 2017/7/31 4 A-0001 人参 200 2017/8/1 5 A-0001 人参 210 2017/8/5 6 A-0005 なす 170 2017/8/8 7 A-0001 人参 190 2017/8/14 ↓ 【提出リスト】 A B C D 管理ナンバー 商品 最新価格 日付 1 A-0001 人参 190 2017/8/14 ←最新の日付 2 A-0002 3 A-0003 4 A-0004 きゅうり 160 2017/7/20 5 A-0005 なす 170 2017/8/8 ←最新の日付 6 A-0006 7 A-0007 8 A-0008
キー列である管理ナンバーを元に、最新の日付のデータ(価格)を求める式を教えてください。
最初は「日々データ」から「提出リスト」へ抽出するのにVLOOKUPを使っていましたが、
管理ナンバーが重複する場合は、最新の日付のデータ(価格)を表示させたいのです。
似たような質問をしている方への回答を調べて参考にしようとしまいたが、上手くいきません。
そもそも下記の式では無理があるように感じ(そして混乱)、こちらに質問させていただきました。
INDEX(日々データ!A:D,MATCH(MAX(日々データ!A:A),日々データ!A:D,0),4)
どうぞよろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:unknown >
人参価格 =SUMPRODUCT(MAX((A2:A7="A-0001")*(B2:B7="人参")*(C2:C7)))
人参最新日付 =SUMPRODUCT(MAX((A2:A7="A-0001")*(B2:B7="人参")*(D2:D7)))
なす価格 =SUMPRODUCT(MAX((A2:A7="A-0005")*(B2:B7="なす")*(C2:C7)))
なす最新日付 =SUMPRODUCT(MAX((A2:A7="A-0005")*(B2:B7="なす")*(D2:D7))) (BJ) 2017/08/14(月) 15:15
提出リストのA列は既に管理ナンバーが昇順で入っており(その横の商品はVLOOKなどで表示)、
日々データから最新価格と日付を引っぱってきたいので、C及びD列に統一の式を入れたいと考えています。
よってBJさんの式を参考にすると、抽出リスト!C1=SUMPRODUCT(MAX((A2:A7=A2)*(B2:B7=A3)*(C2:C7)))
のようになるのでしょうか。
ただ、BJさんの式をそのまま入れても、私の書いた文字をセルに当てはめた式もエラーになってしまいます。
【提出リスト】 A B C D 管理ナンバー 商品 最新価格 日付 1 A-0001 人参 #VALUE! 2017/8/14 2 A-0002 #N/A 3 A-0003 #N/A 4 A-0004 きゅうり#N/A 2017/7/20 5 A-0005 なす #N/A 2017/8/8 6 A-0006 #N/A 7 A-0007 #N/A 8 A-0008 #N/A
(シロックス) 2017/08/14(月) 15:50
【日々データ】と【提出リストが別シートなら、 こんな風にシートを指定してください。
=SUMPRODUCT(MAX((Sheet2!A2:A7="A-0001")*(Sheet2!B2:B7="人参")*(Sheet2!C2:C7))) (BJ) 2017/08/14(月) 16:10
ちょっとお聞きします。 【日々データ】の日付(C列)は昇順でっか? エクセルのバージョンが書いてまへんけど、2007以降でっか?
どっちも「イエス」やったら
C1: =IF($A1="","",IFERROR(LOOKUP(1,0/(日々データ!$A$2:$A$100=$A1),日々データ!C$2:C$100),""))
隣のD1にコピーして、D1の表示形式を「日付」にする。 C1とD1を下にコピー (よみびとしらず) 2017/08/14(月) 16:20
【提出リスト】 A B C D 管理ナンバー 商品 最新価格 日付 1 A-0001 人参 210 2017/8/14 ←最新の日付の価格が欲しいです 2 A-0002 0 1900/1/0 3 A-0003 0 1900/1/0 4 A-0004 きゅうり 160 2017/7/20 5 A-0005 なす 170 2017/8/8 ← 6 A-0006 0 1900/1/0 7 A-0007 0 1900/1/0 8 A-0008 0 1900/1/0 (シロックス) 2017/08/14(月) 16:22
回答したけど見てくれたんやろか? (よみびとしらず) 2017/08/14(月) 16:40
=SUMPRODUCT((A2:A7="A-0001")*(B2:B7="人参")*(D2:D7=人参最新日付)*(C2:C7))
=SUMPRODUCT((A2:A7="A-0005")*(B2:B7="なす")*(D2:D7=なす最新日付)*(C2:C7))
シートの指定を忘れないように。 (BJ) 2017/08/14(月) 17:00
何日も(もしかしら一週間以上)悩んでも出なかったのですごくうれしい気持ちと、
自分がいかに出来ないかがわかりました。
また、ご相談させていただければ嬉しいです。
本当にありがとうございました。
(シロックス) 2017/08/14(月) 17:18
>【日々データ】の日付(C列)は昇順でっか?
(D列)でした。わかってくれたんやろか。 (よみびとしらず) 2017/08/14(月) 17:49
今さらな話ですんまへん。 【提出リスト】のB列(商品)やけど、B2やB3のように【日々データ】にない商品は数式で「""」にしてるんやったら C1とD1のIFERRORは要りまへんな。
C1: =IF($B1="","",LOOKUP(1,0/(日々データ!$A$2:$A$100=$A1),日々データ!C$2:C$100))
D1にコピーし、D1の表示形式を「日付」に。 C1とD1を下にコピー 今さらついでに【日々データ】の日付が昇順とは限らん場合。
D1: =IF(B1="","",MAX(INDEX((日々データ!$A$2:$A$100=A1)*日々データ!$D$2:$D$100,0)))
表示形式を「日付」に
C1はエクセルのバージョンによって変わる。
2007以降ならSUMIFSで C1: =IF(B1="","",SUMIFS(日々データ!$C$2:$C$100,日々データ!$A$2:$A$100,A1,日々データ!$D$2:$D$100,D1))
2003以前ならSUMPRODUCTで C1: =IF(B1="","",SUMPRODUCT((日々データ!$A$2:$A$100=A1)*(日々データ!$D$2:$D$100=D1),日々データ!$C$2:$C$100))
C1とD1を下にコピー (よみびとしらず) 2017/08/15(火) 16:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.