- ベストアンサー
Excel-最大値の取り出しについて
Excelの関数について質問します。 A1から縦に日付が並んでます。 B1から縦にランダムな数字が並んでいます。 例えば、A1の日付の「2007年10月」の期間のB1列の最大値を書き出したい場合、どういう関数を書けばよろしいのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
文字列にしての比較をやめるとどうでしょう? =SUMPRODUCT(MAX((A1:A100>=C1)*(A1:A100<=(DATE(YEAR(C1),MONTH(C1)+1,1)-1))*(B1:B100))) これでも駄目な場合、C1がシリアル値で無いか、A1:B100の間にへんな文字列(?)がまぎれている可能性があります。 ・C1の表示形式を標準にすると39356 と表示されますか(2007/10の場合) ・式中のA1:A10、B1:B100を確実にデータが入っている範囲に変更して見てください。
その他の回答 (5)
- mt2008
- ベストアンサー率52% (885/1701)
No.1です。 > このC1のセルを指定して、10月の最大値を取り出したいと思うのですが、自分で、A1に書いてある年月日から年月だけのテキストに置き換えるつもりで、下記のように、 > > =(SUMPRODUCT(MAX((TEXT(A1:A100,"yyyy/mm")=(TEXT(C1,"yyyy/mm")))*B1:B100))) > > と書いて見たのですが、#VALUE!になってしまいました。 > どこか間違いがありますでしょうか? 文字列で比較するのでしたらこれでどうでしょう =PRODUCT(MAX((TEXT(A1:A100,"yyyy/mm")=TEXT(C1,"yyyy/mm"))*(B1:B100))) ところでC1の値はシリアル値ですよね?
補足
C1はシリアル値になってます。 ん~なぜか上手く行きません。。 =(SUMPRODUCT(MAX((TEXT(A1:A100,"yyyy/mm")=(TEXT(C1,"yyyy/mm")))*B1:B100))) で、MAXを削除すると、B列の数値の合計は出るのですが、MAXを入れると#VALUE!になってしまいます。。 >>文字列で比較するのでしたらこれでどうでしょう =PRODUCT(MAX((TEXT(A1:A100,"yyyy/mm")=TEXT(C1,"yyyy/mm"))*(B1:B100))) これでも#VAULE!がでました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
ピボットテーブル案(参考まで) 1. データ - ピボットテーブルと~~~ 2.次へ 3.範囲:$A$1:$B$15 (範囲はあわせてください) 次へ 4.[レイアウト] 5.日付 を行エリアへ 6.値 をデータエリアへドラッグする 7.合計/値 となっているのでダブルクリックして最大値にする 8.OKして ●既存のワークシート でセルを指定し 完了 9.日付の入ったセルを右クリックして 10.グループと詳細の表示 - グループ化 11.開始日と最終日を指定 単位は月 元データ/結果サンプル A B C D 1 日付 値 最大値 / 値 2 2008/12/15 39 日付 集計 3 2008/12/8 85 9月 96 4 2008/12/1 69 10月 67 5 2008/11/24 7 11月 79 6 2008/11/17 7 12月 85 7 2008/11/10 79 総計 96 8 2008/11/3 32 9 2008/10/27 67 10 2008/10/20 14 11 2008/10/13 38 12 2008/10/6 48 13 2008/9/29 96 14 2008/9/22 20 15 2008/9/15 33
お礼
ピボットテーブルという使い方もあるんですね。 知りませんでした。これから勉強してみます。 ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 A列は日付シリアル値とします。 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下してください。 =MAX(IF(TEXT(A1:A100,"yyyy/m")="2007/10",B1:B100))
お礼
配列数式の場合にShift+Ctrlを押しなら決定するという技を知りませんでした。参考になりました。 すばやいご回答ありがとうございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
SUMとかCOUNTにはSUMIFという関数があるのに、MAXにMAXIFという関数がないんですよね。 配列関数を作成するか作業列使うかになります。 作業列案ですが、 D1に 2007/11/1 と日付が入っているとして C列に =IF(TEXT(A1,"yymm")=TEXT(D$1,"yymm"),B1,"") と入れて下へコピィすれば D2にでも =MAX(C:C) で出ます。 作業列が目障りであれば非表示にしておきます。
お礼
MAXIFとかあると便利そうですよね? なぜ無いのか不思議です。 素早い回答ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
例えば、100行までデータがあるなら↓こんな感じですかね。 =SUMPRODUCT(MAX((A1:A100>=DATE(2007,10,1))*(A1:A100<=DATE(2007,10,31))*(B1:B100)))
補足
早速の回答ありがとうございました! 出来ました。 さらに進化させたいのですが、ここに書いて良いのか・・ 失礼覚悟で書かせていただきますと、、 C1から縦に 2007.10 2007.11 2007.12 2008.1 ・ ・ ・ といった具合に並んでたとします。 このC1のセルを指定して、10月の最大値を取り出したいと思うのですが、自分で、A1に書いてある年月日から年月だけのテキストに置き換えるつもりで、下記のように、 =(SUMPRODUCT(MAX((TEXT(A1:A100,"yyyy/mm")=(TEXT(C1,"yyyy/mm")))*B1:B100))) と書いて見たのですが、#VALUE!になってしまいました。 どこか間違いがありますでしょうか?
お礼
おかげさまで解決です。上手くいきました!! ご丁寧に何度も、どうもありがとうございました。