電子書籍の厳選無料作品が豊富!

エクセルの表において、該当の日付の中から、一番早い時間を抽出したいのですが、どういう関数を使ってどう書けばいいのでしょうか。

具体的には、以下のようにA列に日付があり、1行目に該当日付(抽出日付)が
あるとして、2行めに抽出結果を出したいです。



計算結果
(1) ""
(2) 15:00
(3) 07:29
(4) 15:45
(5) 03:45



以上、よろしくお願いします。

「エクセルで抽出した結果の最早時間取り出し」の質問画像

A 回答 (6件)

 配列式やSUMPRODUCT関数、作業列などは使うまでもありません。


 まず、B2セルに次の関数を入力して下さい。

=IF(ISNUMBER(1/DAY(B$1)),IF(COUNTIF($A:$A,"<"&INT(B$1)+1)-COUNTIF($A:$A,"<"&INT(B$1))>0,MOD(SMALL($A:$A,COUNTIF($A:$A,"<"&INT(B$1))+1),1),""),"")

 次に、B2セルの書式の表示形式を[時刻]として下さい。
 そして、B2セルをコピーして、C2から右方向に向かってコピーして下さい。
 これで、1行目で指定している日付の中で最も早い時刻が、2行目に表示されます。

 尚、この方法では、3行目以下に○を入れなくとも正常に動作致します。
 もし、3行目以下に○を表示させたい場合には、まず、B3セルに次の関数を入力してから、B3セルをコピーして、A列よりも右側にある列の3行目以下のセル範囲に貼り付けて下さい。

=IF(INT($A3)=INT(B$1),"○","")
    • good
    • 0

 回答:No.4です。



>質問には、省いてましたが、ちょっとB2を時刻で設定はできない(文字+時刻で表示させる)ため、

という事は、回答:No.4の日付のデータを含まない時刻のみのシリアル値データでもダメという事ですね。
 それでしたら、B2セルに入力する関数を次の様に変更して下さい。

=IF(ISNUMBER(1/DAY(B$1)),IF(COUNTIF($A:$A,"<"&INT(B$1)+1)-COUNTIF($A:$A,"<"&INT(B$1))>0,"「付け加えたい文字列」"&TEXT(SMALL($A:$A,COUNTIF($A:$A,"<"&INT(B$1))+1),"hh:mm"),""),"")

 それから、確認しておりませんでしたが、もしかしますと、1列目に入力されている日付や、A列に入力されている日時もシリアル値ではなく、文字列データなのでしょうか?
 もし、それらがシリアル値のデータではなく、文字列データだとしますと、計算処理が面倒なことになり、コンピュータに要求される負荷が大きくなり、処理時間が余分に掛かる事になりますから、「1列目に入力されている日付や、A列に入力されている日時」に関しては、文字列データではなく、シリアル値としての日時データで入力された上で、上記の関数の様に「文字+時刻で表示させる」ためのセルに入力する関数の所で、文字列データに変換する様に工夫された方が良いと思います。

 それから、通常では考え難い状況ですが、もしも、どうしても1列目に入力されている日付や、A列に入力されている日時をシリアル値ではなく、文字列データで入力しなければならない場合には、それに合わせた関数を提示させて頂きますので、補足欄か或いは御礼欄等を使用されて、再度御相談下さい。
 
    • good
    • 0

 回答:No.4です。



 済みません、○を入れるためにB3セルに入力する関数にバグがありましたので、次の関数に修正して下さい。

=IF(ISNUMBER(1/DAY($A3)/DAY(B$1)),IF(INT($A3)=INT(B$1),"○",""),"")


 処で話は変わりますが、(4)に表示させねばならない「12月11日の中で最も早い時刻」は15:45ではなく、A9セルに入力されている01:45ではないでしょうか?
「エクセルで抽出した結果の最早時間取り出し」の回答画像5
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご教示頂いた式を参考にしながらやってみます。

>処で話は変わりますが、(4)に表示させねばならない「12月11日の中で最も早い時刻」は
>15:45ではなく、A9セルに入力されている01:45ではないでしょうか?

はい、ご指摘の通り、01:45です。

お礼日時:2012/12/18 11:23

添付図参照


B3: 数式 =IF(AND($A3>=B$1,$A3<B$1+1),$A3,"")
  書式 "○"
此れを右方および下方にズズーッとドラッグ&ペースト
B2: 数式 =IF(COUNT(B3:B14),MIN(B3:B14),"")
  書式 hh:mm
此れを右方にズズーッとドラッグ&ペースト
「エクセルで抽出した結果の最早時間取り出し」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。
一瞬、○とMIN(B3:B14)でなぜ最小がでるの?と思いましたが、
時間表示させるのではなく、○と表示させてるんですね。
ご教示頂いた式を参考にしながらやってみます。

お礼日時:2012/12/18 11:22

こんばんは!


すでに回答は出ていますが・・・

表内に「○」がなくても表示する方法です。
画像の「12月8日」はB列にあるとして、

B2セル(セルの表示形式は「時刻」)に
=IF(SUMPRODUCT((INT($A1:$A1000)=B$1)*1),MIN(IF(INT($A1:$A1000)=B$1,$A1:$A1000)),"")

これも配列数式になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
B2セルを列方向にオートフィルでコピーしてみてください。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
質問には、省いてましたが、○がなくても表示させる方法は有効かと思ってます。
ご教示頂いた式を参考にしながらやってみます。

お礼日時:2012/12/18 11:20

B2の書式を時刻にして↓の式を入れてCtrl+Shift+Enterで配列式として確定。


=IF(COUNTIF(B3:B15,"○")=0,"",MIN(IF(B3:B15="○",$A3:$A15)))

あとは右にコピー。
    • good
    • 0
この回答へのお礼

ありがとうございます。
質問には、省いてましたが、ちょっとB2を時刻で設定はできない(文字+時刻で表示させる)ため、
ご教示頂いた式を参考にしながらやってみます。

お礼日時:2012/12/18 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!