ここから質問投稿すると、最大4000ポイント当たる!!!! >>

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

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



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



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

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

このQ&Aに関連する最新のQ&A

A 回答 (6件)

 回答: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

 配列式や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

添付図参照


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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q指定範囲から任意の近似値を探したい

画像のようなものを作ろうと思っています。
ですが、vlookupやindex・match関数では私の力ではうまい具合にはいきませんでした。

どのように数式を入れるとよろしいのでしょうか?

Aベストアンサー

こんにちは!

G12セルに
=MIN(IF(B3:E15>G8,B3:E15))
これは配列数式になりますので、Ctrl+Shift+Enterで確定!

G14セルに
=ADDRESS(SUMPRODUCT((B3:E15=G12)*ROW(B3:B15)),SUMPRODUCT((B3:E15=G12)*COLUMN(B3:E3)),4)

という数式を入れてみてください。m(_ _)m

Qエクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

例えばこんなデータなのですが、

2002/07/01 99 25 36
2002/07/05 55 33 25
2002/08/01 80 20 51

日付の入っている列を検索して、2002/07/01から2002/07/31
の範囲ならば、その行のデータを別のシートに抽出したいのですが、
日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら
between 9999/99/99 and 9999/99/99って感じで簡単にできるの
ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って
>=2002/07/01
<=2002/07/31
と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して
くれると考えたのですが、なぜかダメでした。
(↓こういう入力をしました)
=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

Aベストアンサー

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

------------余談--------------------------
ご質問の条件例の場合特例で 2002/7でればOKなので

=IF(TEXT(Sheet2!A1,"yyyym")="20027",Sheet2!A1,"該当月ありません")

でも可能ですね!

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

--...続きを読む

Qエクセルで時間ごとの最大値、最小値を導き出したい。

 初めまして、よろしくお願いします。
 エクセルで分ごとの最大値と最小値を求める関数を教えて頂きたく、よろしくお願いします。

例)
     A1         B2
2007/9/6 15:11:54   5
2007/9/6 15:10:43   1
2007/9/6 15:10:33   22
2007/9/6 15:10:20   21
2007/9/6 15:10:16   54
2007/9/6 15:10:10   23
2007/9/6 15:10:08    12
2007/9/6 15:09:54    3
2007/9/6 15:09:24   34
"
"
と言うデーターを。
             最大値     最小値
2007/9/6 15:11:00   ・・      ・・
2007/9/6 15:10:00   54       1
2007/9/6 15:09:00   ・・      ・・
     ”
     ”
   

   

 初めまして、よろしくお願いします。
 エクセルで分ごとの最大値と最小値を求める関数を教えて頂きたく、よろしくお願いします。

例)
     A1         B2
2007/9/6 15:11:54   5
2007/9/6 15:10:43   1
2007/9/6 15:10:33   22
2007/9/6 15:10:20   21
2007/9/6 15:10:16   54
2007/9/6 15:10:10   23
2007/9/6 15:10:08    12
2007/9/6 15:09:54    3
2007/9/6 15:09:24   34
"
"
と言うデーターを。
  ...続きを読む

Aベストアンサー

こんばんは。

一度、試していただきたいのは、最小値が出ている数式を、数式バー上でコピーして、
そのまま、同じ行の、最大値に貼り付けて、そこで、MIN とあるものを、MAX に変えてみてください。

なお、そろそろ、「補足側」でなく、「お礼側」にコメントつけてください。コメントが不足した場合に、「補足」につけてくださればよいです。そうすると、不定期な書き込みでも、こちらには、確実、メールの連絡が入るようになりますので、回答がしやすくなります。すぐに、返事が出来るわけではありませんが、よろしくお願いします。

Qエクセルで時間表示を分表示に変換したい。

エクセルで、例えばタイムカードを出社時間9:00退社時間10:30とするとセル番号の引き算で1:30となります。これを90分と表示させたいのです、どのようなに換算させるのかを教えてください。

Aベストアンサー

こんにちは。

エクセルでは1日を1であらわしています。
時間に直すには24をかけます。
さらに60をかけると分に換算できます。

1:30はセルの表示形式を標準にすると、
0.0625 となるので、
0.0625 × 24 × 60 = 90
となります。

QEXCELで文字列を時刻表示(時:分:秒)にしたいのですが?

セル内の7桁時分秒表示(00時00分00秒0)の文字列から00:00:00(時:分:秒)と表示させる。
又は00:00:00:0(時:分:秒:0)と表示させる。
よろしくお願いします。


2121170 を 21:21:17 又は 21:21:17:0
1710500 を 17:10:50 又は 17:10:50:0
0001070 を 00:01:07 又は 00:01:07:0

Aベストアンサー

◆表示だけなら
★表示形式をユーザー定義で、 00!:00!:00!:0 とします

★シリアル値にするなら
別のセルに
=TIME(LEFT(A1,2),MID(A1,3,2),MID(A1,5,2))

Qエクセルで最高値、最低値の日付を表示させたい

エクセルで最高値と最低値はMAXとMIN関数で抽出表示できたのですが

できればその日付も表示させるにはどうしたらいいでしょうか。

宜しくお願いいたします。

Aベストアンサー

関数を使う検索は(上の方の該当)1行しか取れないですがそれを覚悟の上で、
値を問題にしている列で、MATCH関数で、最大値と一致する(最初の)行が判るので
また列(日付の入った列)は既定の場合だろうと思うので、
さらに、INDEX関数を使って
=INDEX(日付列範囲、最大値とマッチした行、1)
で取れるでしょう。
最小値も同じ考えです。
ーー
質問には簡単な少数の実例を挙げること。回答が上記のように文章にならざるを得ないよ。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、日時から時間のみ抽出

エクセルで、1つのセルに、『2006/11/20/12:00』と入力されている場合、『12』のみ抽出したいのですが、どのような計算式を入れたらよいのでしょうか。
お知りの方、教えて下さい。宜しくお願い致します。

Aベストアンサー

こんにちは

普通に考えると
=HOUR(該当セル)
のような気もするけど

「2006/11/20/12:00」と入力されてるの? 日付と時間の間にもスラッシュ?

Qエクセルで分から時間に変換したいのですが

いつもお世話になっています。よろしくお願いいたします。
エクセルで「分」の合計を「時分」に変換して表示したいのですがどうもうまくいきません。
どなたかご教授願えないでしょうか?
例:200(分)=3時間20分もしくは3:20
お願いいたします。

Aベストアンサー

A1に「分」が入っていて、別のセルに時分に変換して表示する場合とします。

24時間(1440分)未満であれば、
=A1/1440
とし、セルの書式設定で以下のいづれかを設定すればOK。
(1)[時刻]→[13:30]を選択
(2)[ユーザー定義]→h:m
(3)[ユーザー定義]→h時間m分
※分単位は常に2桁(2時間05分など)で表示したいなら
 (1)の設定か、またはmをmmに変更してください。


上記方法では23時間59分までしか正しく表示できないので、
もし24時間(1440分)以上になる場合は別の方法が必要です。
=INT(A1/60)&":"&MOD(A1,60)
または
=INT(A1/60)&"時間"&MOD(A1,60)&"分"
※分表示を常に2桁にするのであれば、
 MOD(A1,60)をRIGHT("0"&MOD(A3,60),2)に変更してください。


人気Q&Aランキング