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

エクセルで過去10年分の連続したデータの各月の最大値を求めるにMAX関数を使い各月求めたの
ですが かなり大変です。DMAXを使い何とかできないか検討しましたがうまく行きません
お知恵を貸してください
   月日     合計  商品1 商品2    H194月 合計最大 2012
 H190401  2002  1102  900     H195月 合計最大 2022
 H190402  2012  1012  1000
   ~ 
 H281031  2018  1018  1000

A 回答 (1件)

自分なら、


A列に日付、B列にC列からD列までの合計、C列とD列に各個数などのデータ、F列に検索する月、H列に月毎の最大値を表示
するとして【配列数式】で対処します。

そのまえに日付を正しく表記するかな。
質問の例では日付はExcelが『日付と認識できる文字列』ではないなので、これを直します。
※ただし、セルの表示形式をユーザー書式にして、
 「ge m d」 とか 「ge m月」
 などと指定している場合以外は、正常な日付が入力されているのでこの限りではない。

・・・
H2セルには、
 IF(F2=A列全体 , B列全体 , 0)
こんな感じの処理をさせます。(これは正しく動作しません)
これに対してMAX関数を適用です。
 =MAX(IF(F2=A:A,B:B,0))
こんな感じになります。
ただし、F2とA列の値は正しく対比できていないので、ここを修正します。
(このままでは月の初日(1日)しか比較対象になりません)

F列は指定月の1日になるので、
A列は
 DATE(YEAR(A:A),MONTH(A:A),1)
として、その月の1日に強制的に置き換えて比較することになります。

 =MAX(IF(F2=DATE(YEAR(A:A),MONTH(A:A),1),B:B,0))
こうなる。
これで入力は終わり。そしてこの入力をCtrlキーとShiftキーを押しながらEnterキーを押して確定する。
するとこの数式が【配列数式】として認識され、数式全体が「{ }」で囲まれる。
 {=MAX(IF(F2=DATE(YEAR(A:A),MONTH(A:A),1),B:B,0))}
※この「{ }」を手で入力しても【配列数式】にはならない。Ctrl+Shift+Enterで入力を確定する必要がある。

あとはH2セルをコピーしてG3セルやG4セルに貼り付ける。


・・・余談・・・
Excelが日付として認識できる文字列は、
セルの表示形式で「日付」にある書式で指定されるものだけです。
「H281031」「H195月」は認識されません。
「H28/10/31」「H19.5.1」などはOK。
    • good
    • 0
この回答へのお礼

うまくいきました
これなら数式も簡単で後任に引き継げます

お礼日時:2016/12/17 11:21

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