Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
Vlookupで条件付きの方法
投稿日時: 21/02/08 14:39:47
投稿者: 春麗

A列にIDがあり,B列には期限が入っています.
Vlookupを使っていますが,同じIDが複数あるため最初にヒットした期限を引っ張ってきます.
同じIDの場合,期限が長い方を選ぶ方法はありますでしょうか.
 
A B
111 2021/01/01
222 2021/01/06        
333 2021/01/01
111 2021/02/01
444 2021/01/12
222 2021/01/07
 
よろしくお願いいたします.

回答
投稿日時: 21/02/08 15:37:58
投稿者: んなっと

   A     B C  D     E
1  ID    期限   ID    期限
2 111  2021/1/1   111  2021/2/1
3 222  2021/1/6   222  2021/1/7
4 333  2021/1/1   333  2021/1/1
5 111  2021/2/1   444 2021/1/12
6 444 2021/1/12          
7 222  2021/1/7          
 
「B列のなるべく下の日付」なら
E2
=LOOKUP(1,0/(A$2:A$1000=D2),B$2:B$1000)
下方向・↓
 
「B列のなるべく大きい日付」なら
=AGGREGATE(14,6,B$2:B$1000/(A$2:A$1000=D2),1)
※Microsoft365であれば
=MAXIFS(B:B,A:A,D2)

回答
投稿日時: 21/02/08 15:42:33
投稿者: んなっと

最初の方に追加
※Microsoft365であれば
=XLOOKUP(D2,A:A,B:B,"",,-1)

投稿日時: 21/02/08 16:43:32
投稿者: 春麗

んなっとさん
どうもありがとうございました.
 
@=LOOKUP(1,0/(A$2:A$1000=D2),B$2:B$1000)
 
A=AGGREGATE(14,6,B$2:B$1000/(A$2:A$1000=D2),1)
 
B=MAXIFS(B:B,A:A,D2)
 
C=XLOOKUP(D2,A:A,B:B,"",,-1)
 
例えば以下の様なケースですと,正しく関数が機能しないのはなぜでしょうか.
 
ID    期限
444    2021/01/01
555    2021/01/11
555    2021/05/05
444    2021/04/04
 
んなっとさんの@〜Cのどの式でも同じ結果になります.
 
444    2021/04/04
555    2021/05/05

回答
投稿日時: 21/02/08 17:39:54
投稿者: んなっと

同じIDの場合,後ろの方の日付を返すのですよね。
それでいいと思います。

回答
投稿日時: 21/02/08 17:56:14
投稿者: WinArrow
投稿者のウェブサイトに移動

>期限が長い方
とは、どのような意味でしょうか?

投稿日時: 21/02/08 18:23:48
投稿者: 春麗

WinArrowさん
ご指摘をありがとうございました.
 
申し訳ありません.
期限が長いというのは,例えば2/8を起点にして最も遠い月日のことを言いたかったです.
 
状況が変わるといけないので,B列の並びがどうであれ,
もっとも遠い日付を取得する場合と,逆に期限が短いものが取得できる場合があると助かります.

回答
投稿日時: 21/02/08 23:31:35
投稿者: んなっと

わかりやすい具体例を書いてください。

回答
投稿日時: 21/02/08 23:32:47
投稿者: んなっと

必ず表形式で。

回答
投稿日時: 21/02/09 09:51:44
投稿者: X-PIE

同じIDのうち「最も古い」「最も新しい」ではなく
過去だろうが未来だろうが、起点との差が「最も大きい」「最も小さい」を
求めたいということでしょうか。
 
起点はどうやって指定していますか?

トピックに返信