- ベストアンサー
エクセルで日付毎の最大値、最小値を一覧表にしたい
- エクセルの表で、日付ごとに記録された温湿度データから最低温度と最高温度を抜き出す方法について質問です。
- データは30分ごとに記録されており、8:00〜20:00までの間のデータを対象にしたいと思っています。
- 結果の一覧表は、最低温度と最高温度が隣り合って配置されることが望ましいです。VBAを使用してデータの間隔に制約を受けない方法があれば、さらに便利です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
列が出ていません。画像のような表とします。 G列に日付を入れます。 G6: =INT(A5) H6: =INDEX($A:$A,MATCH($G6&I6,INDEX(INT($A$1:$A$8788)&C$1:C$8788,),0)) I6: =MINIFS(C:C,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) J6: =INDEX($A:$A,MATCH($G6&K6,INDEX(INT($A$1:$A$8788)&C$1:C$8788,),0)) K6: =MAXIFS(C:C,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) L6: =INDEX($A:$A,MATCH($G6&M6,INDEX(INT($A$1:$A$8788)&D$1:D$8788,),0)) M6: =MINIFS(D:D,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) N6: =INDEX($A:$A,MATCH($G6&O6,INDEX(INT($A$1:$A$8788)&D$1:D$8788,),0)) O6: =MAXIFS(D:D,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) P6: =INDEX($A:$A,MATCH($G6&Q6,INDEX(INT($A$1:$A$8788)&E$1:E$8788,),0)) Q6: =MINIFS(E:E,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) R6: =INDEX($A:$A,MATCH($G6&S6,INDEX(INT($A$1:$A$8788)&E$1:E$8788,),0)) S6: =MAXIFS(E:E,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) T6: =INDEX($A:$A,MATCH($G6&U6,INDEX(INT($A$1:$A$8788)&F$1:F$8788,),0)) U6: =MINIFS(F:F,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) V6: =INDEX($A:$A,MATCH($G6&W6,INDEX(INT($A$1:$A$8788)&F$1:F$8788,),0)) W6: =MAXIFS(F:F,$A:$A,">="&$G6,$A:$A,"<"&$G6+1) G7: =G6+1 H6:W6 を7行目へコピペ。 G7:W7 を纏めて下へコピペ。 minifs maxifs の無いバージョンの場合、補足に書いて下さい。
その他の回答 (3)
- msMike
- ベストアンサー率20% (368/1813)
はい、こんイちは! 添付図について、確認させてください。 1.行番号はチャンと明示されているのに、列記号無しなのはなぜ? 2.左端列は 2022/3/28 12:30 以降30分毎の日時ですが、右隣はそれ  ̄ ̄ぞれのシリアル値と推察しますが、それを設けた理由は何?  ̄ ̄無用の長物では?それとも、何かに少しでも役立ってますか?
お礼
ご回答ありがとうございます。 オハヨウゴザイマス。 先ほどの補足で列番号に関しての回答が抜けました。 データ上部に種々の情報が記載されていたのでキャプチャーする時に外した次第です。 不要な行を非表示にしてからキャプチャーすることに思い至らず申し訳ありません。
補足
この表は有る機器の温度測定結果からCSVファイルで抜き出したものを単純にエクセルで開いたものです。 よってこの表の構成を変えるには1手間、2手間かかるので出来るだけこの表から直接に加工したいのです。
- imogasi
- ベストアンサー率27% (4737/17070)
こういう課題は、データベースソフトを使いこなして、やるべきだ。 エクセル関数しかできなので、こういう質問を出すのだろうが、回答を難しくしているだけで、徒労感が強い。 ーー まず日付(1日分)の範囲の最大・最少を問題にしてながら、A列には、時刻も入っている。邪魔だ。2列に日と時刻がわかれているやりやすいが。 日付けだけにするには、=INT(A2)や =ROUNDDOWN(A2,0)など方法があるかも。 ーー そこで A列(第1行目は見出し文言にすること)を(見出し行も含めて)範囲指定しておいて、データーフィルター詳細設定(フィルタオプションの設定)ー「抽出先」を選び、指定した範囲ー重複するレコードは無視するをON、で、A列のデータをもとに、重複のないデータ(今回は日付)のリストを作る。「抽出先」は、同一シートの空き列を指定。「抽出先」列の第1行目はA列と同じ見出しをコピーしておく。 「抽出先」範囲にも見出し相当の行も含める。 ーー これで出てくる日付はA列データ中の漏れがない、重複のない日付けが作れた。 最低の場合、手作業で同じものを作る手もある。連続の毎日なら開始日から1ごと全日がオートフィルで出せるが、その方法の方が簡単かも === さて日付ごとの最高温度、と最低温度は https://dekiru.net/article/14598/ 「MAXIFS関数の使い方。複数の条件に対応する範囲の中から最大値を返す」 の説明に従って、 (1)日付が抽出した日付列と同じで (2)最大温度のデータ範囲列内で MAXIFSで、範囲列内の最高温度を求めてください。 ーー 日ごと最低温度はMINIFSで、最高温度の場合と、同じやり方です。
お礼
ご回答ありがとうございました。 参考にさせて頂きます。
- BUN910
- ベストアンサー率33% (1069/3229)
あなたのイメージに合うか判りませんが・・・ 別なシートに日付を入れ、その右側のセルに最高を記載したいのであれば、そのセルに「オートSUM」の最大値を選択する。 その範囲(点線で表示される)を指定してあげれば数値がピックアップされますよ。 最低も最小値を選択すれば出てきます。 数値の列が48個でないとしても、余裕をもって55とか60列を範囲にすれば出ます。
お礼
ご回答ありがとうございます。 参考にさせて頂きます。 範囲を指定するのがかなり手間なので。。。。
お礼
素晴らしい!!!! 気になったのでとりあえず表をコピーしたダミーシートでご回答の行/列に合わせ込んで、ご回答をコピペしてみたら、なんと!!一発で期待した通りの表が作成できました。 ご回答の記載より当方の手間暇が圧倒的に少ないこと気が引けるほどですが、とにかくありがとうございました。 miniifsを始めて知りました。 これも参考になり合わせて感謝!!
補足
おはようございます。 早々のご回答ありがとうございます。 minifs関数は使えるようです。出てきましたので。 列に関しては上部に種々の情報が入っているのでそれを外してそのままキャプチャーしたもので、行を非表示にすることに思い至らず申し訳ありません。 早々に試してみたいのですが、今少しお時間を頂き検証結果を報告させていただきますのでご容赦ください。