• ベストアンサー

Excel-最大値の取り出しについて

Excelの関数について質問します。 A1から縦に日付が並んでます。 B1から縦にランダムな数字が並んでいます。 例えば、A1の日付の「2007年10月」の期間のB1列の最大値を書き出したい場合、どういう関数を書けばよろしいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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を確実にデータが入っている範囲に変更して見てください。

kabugom
質問者

お礼

おかげさまで解決です。上手くいきました!! ご丁寧に何度も、どうもありがとうございました。

その他の回答 (5)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

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の値はシリアル値ですよね?

kabugom
質問者

補足

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!がでました。

回答No.4

ピボットテーブル案(参考まで) 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

kabugom
質問者

お礼

ピボットテーブルという使い方もあるんですね。 知りませんでした。これから勉強してみます。 ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 A列は日付シリアル値とします。 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下してください。 =MAX(IF(TEXT(A1:A100,"yyyy/m")="2007/10",B1:B100))

kabugom
質問者

お礼

配列数式の場合にShift+Ctrlを押しなら決定するという技を知りませんでした。参考になりました。 すばやいご回答ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

SUMとかCOUNTにはSUMIFという関数があるのに、MAXにMAXIFという関数がないんですよね。 配列関数を作成するか作業列使うかになります。 作業列案ですが、 D1に 2007/11/1 と日付が入っているとして C列に =IF(TEXT(A1,"yymm")=TEXT(D$1,"yymm"),B1,"") と入れて下へコピィすれば D2にでも =MAX(C:C) で出ます。 作業列が目障りであれば非表示にしておきます。

kabugom
質問者

お礼

MAXIFとかあると便利そうですよね? なぜ無いのか不思議です。 素早い回答ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

例えば、100行までデータがあるなら↓こんな感じですかね。 =SUMPRODUCT(MAX((A1:A100>=DATE(2007,10,1))*(A1:A100<=DATE(2007,10,31))*(B1:B100)))

kabugom
質問者

補足

早速の回答ありがとうございました! 出来ました。 さらに進化させたいのですが、ここに書いて良いのか・・ 失礼覚悟で書かせていただきますと、、 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!になってしまいました。 どこか間違いがありますでしょうか?

関連するQ&A

  • (EXCEL)条件付き最大値

    EXCELで条件付きの最大値を求めたいと思ったのですが、やり方がおもいつきません。 例 1 A 1月2日 2 B 1月9日 3 A 1月6日 4 A 1月8日 5 B 1月5日 6 A 1月2日 とあって、2列目がBの最大の日付を表示させたいのですが、、どうしたらいいでしょう? ついでに、2列目がBの最大の日付のときの1列目も一緒に表示させたいのですが、、、

  • エクセルである行番号より上のセルの最大値を求める

    エクセルでa列に数字が縦に並んでいます。 b1にある数字(例えば 4)があり、 a列の a1セル~a4セル の間の 最大値 を求めたいのです。 row()関数をうまく使えないので、関数の作り方がわかりません。 最大値が求まる関数を教えてください。 1   4  5←求める数字 3 5 4 8 ・ ・ ・

  • (EXCEL関数)特定範囲内の最大値

    いろいろと調べてみましたが、思うようなものがないため質問させていただきます。 EXCELのA列に順不同で5桁の数字がならんでいます。     A 1  (関数) 2  00001 3  90124 4  12452     : 「A1」にA列の最大値を求める関数を入れたいのですが、60400以下の最大値を求めたいのです。 =MAX(A2:A10)<=60400 だと、「False」になってしまいます。 すいませんがよろしくお願いします。

  • EXCEL関数にて

    いつもお世話になっております。 Excelの関数にて質問なのですが、下記のようなデータが セルに入っているとします。 A列 B列    C列    D列  1  06/06/10 06/07/01 06/06/04 2  06/06/07 06/06/25 06/06/10 3  06/06/15 06/06/20 06/06/15 2  06/06/15 06/06/01 06/06/20 3  06/06/01 06/06/07 06/06/09 2  06/06/01 06/06/02 06/06/30 処理1.A列が1で、且つ日付が最大値(最小値)のもの 処理2.A列が2か3で、且つ日付が最大値(最小値)のもの AND関数とMIN関数とMAX関数を、使って色々ためしているのですが うまくいきません。 どういった書式で求められるのか、ご教授頂けませんか? それから単純にB列の最小値を得ようとしても、求められないのは 重複してたりするからですか?? 重ねて、教えていただけると助かります。

  • Excel関数について

    Excel関数について Excel2003を使用しております。 B列に日付を入力しており、E列には数字を入力しております。 B列には必ず日付を入力しておりますが、E列には数字を入力していない場合もあり、 日付ごとにE列に入力した数字をカウントしたいのですが、 どのような数式を使用すれば確認出来るでしょうか? 日付ごとの数字の合計ではなく、あくまでもカウントになります。 ご教示頂きたく、何卒宜しくお願い致します。

  • EXCELで、ある値で検索後、最大値を求める方法について

    EXCELで、ある値での最大値を求める方法がありますでしょうか?数日考えておりましたが結論はでませんでした。 どなたかヒントだけでも結構ですのでご教授頂けないでしょうか? 下記の場合、   A  B  C  D  E  F  G 1       あ  い         2    1  2  2.1    9.6 3    2  3  5.4    5.6    4    3  4  8.2    5.4    5    4  5  1.9    8.2    6    5  1  7.8    4.5    7    6  1  9.6     .    8    7  2  5.6     .    9    8  5  4.5     .    10    9  3  4.8        .    .  .   .         .    .  .   .         .    .  .   .         3000以上 B列の数値をもとにC列の中で検索させ、いくつか該当するとき、その右側のD列の最大値を求めることができるかどうか。 たとえば、B列の1の場合、C列の中で1が2箇所あり、その右側であるD列の値は7.8と9.6となります。そのうちの最大値は9.6ですので、F列の同行に答えとなる値が入ります。そのようなF列の関数等は無いでしょうか? 当方でもいろいろ調べ、DMAX関数が使えそうですが、B列の値が縦(列)となってる場合はうまくいきませんでした。もしB列の値が、縦(列)ではなく横(行)である場合は、OFFSET関数などと併せてうまくいきますが、最大256列(EXCELの制限)までしか扱えません。 何か方法があればヒントだけでも結構ですのでよろしくお願いします。

  • エクセルの関数で最大値に関する表示を教えてください。

    過去ログを調べたのですが一致した物が見あたりませんでしたので質問させていただきます。 たとえばA列とB列に数字が入力されているとします。A列の最大値を求める場合はMAX()関数で処理できます。わからないのはこの先でたとえばA列の最大値がA38の時にB38の値を返すという関数の表示方法が知りたいのですがこのようなことは可能でしょうか? 現在はmax関数でA列の最大値を見つけてその隣の数字を確認して手動で入力していますが自動にしたいのです。 どなたかご存じの方がいらっしゃいましたらご教授願いします。

  • Excel関数

    A列に日付、B列に曜日、C列に数字が書いてあります。 D列に、当日のC列の数字が、前日から先週の月曜までの最高値を上回っていれば1,そうでなければ0と表示させたいのですが可能でしょうか? Excel関数に強い方いらっしゃいましたら是非お助けください! 宜しくお願いします。

  • EXCEL関数である曜日のときに、特定の数字を返す方法

    EXCEL関数でわからない点があり質問です。 EXCELにて、ある特定の曜日のときに、 特定の数字を返す、という関数を入れようとしているのですが、 なぜかうまくいきません。 まず、B列に入った日付から曜日番号を返す関数をA列に入れて =WEEKDAY(B4,1) としています。 その次に、A列のセルが1か2か7の時に、K列の数字を返す、 という関数を入力しました。 =IF(OR(A4="1",A4="2",A4="7"),K4,"") 関数的には間違いがないように思うのですが、 どうも、A4="1"といった関数がうまく動いていないようです。 たとえそれが1であっても、TRUEを返してくれません。 WEEKDAYの番号は数字とは違うのでしょうか? どなたか、お分かりになる方、 教えてください!

  • エクセルの関数についての質問です。

    エクセルの関数についての質問です。 画像のように横に1、2、3…(100くらいまで続きます)縦にA、B、Cの行があります(端が切れちゃってますが、A2にA、A3にB、A4にCです) B2から横の列にはそれぞれ☆や○等いろいろな記号が入ります。 そしてこの記号には特定の値が決められています。☆=10、○=5、△=3 B3から横には、B2の記号にそった数字が入ります。(10やら5等) そこまではIF関数で式を作ったのですが、ここからが問題でして… B2から横に1から100まで、記号(B3から横に数字)を入力していった時のB3列の合計が仮に212とします。 合計した値が200を越えてしまった場合、B4からの列に数字を入力するようにしたいのです。 (200ギリギリ前くらいまではB3の列で、それを越える時からB4の列に入力します。その際、B3列に入る数字は消えます) なおかつ可能であれば、このB4からの列に入るのはランダムにできるといいのですが…(画像では○の数字を下ろしていますが、☆の数字をおろしても良いし、△の数字をおろしても良い) ●計算式によって入力された数字(B3列)を特定の数字を越えた場合、別の枠(B4列)に移す関数はありますでしょうか?? ●また、それをランダム(関数)で選ぶことは可能でしょうか?? よろしくお願いします。

専門家に質問してみよう