[[20190814001549]] 『日付範囲のあるデータ抽出方法』(shizuku) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付範囲のあるデータ抽出方法』(shizuku)

例えば、発売時期によってバージョンが違うが、題名は同じ本があるとします。本の題名と発売日からバージョンを算出したい場合、何かいい方法ありますか?index、match関数で算出しようとしても、日付が範囲になっており算出できません。

下記に詳細のサンプルエクセルを記述しました。
<発売日マスタエクセル>に、本の題名、バージョン、発売日(From-To)を記述し、<バージョン算出用エクセル>のC列に、マスタからヒットするバージョンを表示させたいです。

<発売日マスタエクセル>

   A列     B列      C列       D列  
  本の題名  バージョン  発売日(From)  発売日(To)
1 あああ   Ver1    2014/8/10    2014/11/30    
2 あああ   Ver2    2014/12/1    2016/4/5
3 あああ   Ver3    2016/4/6    2019/5/31
4 いいい   Ver1    2014/9/1    2017/7/13
5 いいい   Ver2    2017/7/14    2019/8/1
6 ううう   Ver1    2015/3/3    2016/4/10
7 ううう   Ver2    2016/4/11       2018/2/20
8  ううう   Ver3    2018/2/21       2019/6/15
・
・
・

<バージョン算出用エクセル>

   A列     B列      C列    
  本の題名  購入日   バージョン
1 あああ   2015/3/1    
2 ううう   2017/2/24    
3 いいい   2019/5/10    
4 いいい   2017/4/10    
5 ううう   2017/12/1  
6 あああ   2016/11/9  
7 あああ   2018/9/15
・
・
・

ご教授願います。。。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 おはようございます。。。
 ベタベタですけど、、、
 配列で確定します。。
 答えはあってますでしょうか??

 本の題名  購入日	バージョン
 あああ	  2015/3/1	Ver2  
 ううう	  2017/2/24	Ver2
 いいい	  2019/5/10	Ver2
 いいい	  2017/4/10	Ver1
 ううう	  2017/12/1	Ver2
 あああ	  2016/11/9	Ver3
 あああ	  2018/9/15	Ver3

 すみません。ない時も解を返すので、、↓にしておきます。
=IF(MAX((Sheet1!$A$2:$A$9=A2)*(Sheet1!$C$2:$C$9<=B2)*(Sheet1!$D$2:$D$9>=B2))>0,
INDEX(Sheet1!$B$2:$B$9,MAX((Sheet1!$A$2:$A$9=A2)*(Sheet1!$C$2:$C$9<=B2)*(Sheet1!$D$2:$D$9>=B2)*ROW(Sheet1!$A$1:$A$8))),"")
(SoulMan) 2019/08/14(水) 06:51

 おはようございます^^。。。連休ですか。。。いいっすね〜
合ってましたですよ。
う
 また要らぬお世話を。。。つい手が。。。( ̄▽ ̄)
m(_ _)mm(_ _)mm(_ _)/
(隠居じーさん) 2019/08/14(水) 07:32

 おはようございます。

 お久しぶりです。

 最近、検証されていなかったので少々不安でしたぁ(笑)

 連休です。。暇です。。。

 では、、また、、よろしくお願いします。。。
(SoulMan) 2019/08/14(水) 07:40

 バージョンというのは、実際のデータも文字列なんですかね?
 数値なら SUMIFS 関数でできそうですけど・・・

 文字列なら
 発売日マスタが Sheet1
 どちらのシートも、1行目が見出し、2行目からデータだとして

 C2 =IFERROR(INDEX(Sheet1!$B$2:$B$100,MATCH(1,INDEX((Sheet1!$A$2:$A$100=A2)*(Sheet1!$C$2:$C$100<=B2)*(Sheet1!$D$2:$D$100>=B2),0),0)),"")

 または
 C2 =IFERROR(LOOKUP(1,0/((Sheet1!$A$2:$A$100=A2)*(Sheet1!$C$2:$C$100<=B2)*(Sheet1!$D$2:$D$100>=B2)),Sheet1!$B$2:$B$100),"")

 普通に Enter だけで確定し、下にコピー
 範囲は実際の表に合わせてください。

 以上です
(笑) 2019/08/14(水) 08:09

 一応、書いておきますけど
 本当にマスターのB列が Ver1、Ver2、Ver3 …… のような値なら
 置換で Ver を削除して数値だけにし、表示形式〜ユーザー定義を "Ver"0 とする。

 こうしておけば SUMIFS 関数でもできますね。

 参考まで
(笑) 2019/08/14(水) 08:49

ご回答ありがとうございます。無事、算出できました!
マスタのB列を文字列ではなく数値にすれば、SUMIFS関数でできるんですね。
SUMIFS関数のほうが簡単な式になるのでしょうか?
(shizuku) 2019/08/14(水) 13:51

 市販の参考書に書いてあるレベルのことで対処できるという意味では
 簡単な式になりますね。

 C2 =SUMIFS(Sheet1!B:B,Sheet1!A:A,A2,Sheet1!C:C,"<="&B2,Sheet1!D:D,">="&B2)

 どんな数値なのか知りませんが、Ver1、Ver2 ……のような表示にしたいのなら
 表示形式〜ユーザー定義 "Ver"0;; ← セミコロンを2つ付ける!(「0」を非表示にするため)

 参考まで
(笑) 2019/08/15(木) 10:03

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.