• ベストアンサー

Excelで月別(条件)での最大値を求める関数はどのように指定するか教

Excelで月別(条件)での最大値を求める関数はどのように指定するか教えてください。 画像のように、月日が書かれたB列のセルを参照して、右隣にあるF5のリストにあわせて、H5に月別の最大値が表示できる関数はどのように指定すればよろしいでしょうか? また、1月・2月・3月・・・と順に書かれた表の月の下へ最大値を表示する場合も併せて教えてください。 例)→ 1月  2月  3月・・・・・     ¥128 ¥98 ¥248・・・・・ よろしくお願いいたしますm(__)m

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

補足情報です。 F5セルのリストや一覧表の月の数字が全角と半角が混ざっている(あるいは全角で入力されている)場合は、以下のようにASC関数で半角に統一して検索するようにしてください。 =IF(F5="","",MAX(INDEX((MONTH($B$3:$B$100)&"月"=ASC(F5))*$D$3:$D$100,)))

akbbb75
質問者

お礼

なるほど、ありがとうございます。これであれば簡単に最大値を参照できますね!早速できました。補足ですが、入力リストが1月・2月・・・と月なしの数字の1・2である場合、関数の&"月"の部分は空白にすればよろしいのでしょうか?・・・月を消して空白にすると参照する事ができました。

その他の回答 (5)

回答No.6

(年は区別しなくていいのかな) 数式案で解決されているようですが、 ピボットテーブルも試してみてください。 0.1 B2セルを選択 0.2 データ - ピボットテーブル・・・ 1. 次へ 2. 範囲:$B$2:$D$18 (自動入力) 3.1 [レイアウト] 3.2 月日→列、金額→データ 3.3 金額をダブルクリックして最大値 3.4 [OK] 3.5 [完了] 4.1 列エリアのどこでもよいが日付を右クリック     グループと詳細の表示 - グループ化 4.2 月(必要に応じて「年」も)反転 [OK] 5. 総計は不要なので「総計」を右クリック - 表示しない データに変更があったら データの更新の必要があります。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No1です。 回答No2の方がスマートな方法を提案していますのでそれを使ってください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>補足ですが、入力リストが1月・2月・・・と月なしの数字の1・2である場合、関数の&"月"の部分は空白にすればよろしいのでしょうか? その通りです。 数式の意味はB3:B100セルの月がF5と等しいD3:D100セルの値の中での最大値を求めていますので、数字が半角ならASCの部分も不要になります。 #今回は極めて簡単な数式で最大値を求めることができるので式の修正も簡単ですが、このようなご質問では、「たとえば」ではなく、実際のデータ例をできる限り正確に示さないと、的確な回答ができなくなりますので注意してください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

B列の日付の月がF5セルと一致する行のD列の値の中で(商品名に関係なく)最大値を求めたいだけなら以下のような数式になります。 =IF(F5="","",MAX(INDEX((MONTH($B$3:$B$100)&"月"=F5)*$D$3:$D$100,))) 表の月の下に最大値を表示する場合も同じ数式になります。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

H5セルには次の式を入力してから、式を確定する段階でCtrl+Shiftキーを押しながらEnterキーを使って確定します。その後に下方にオートフィルドラッグします。 =IF(F5="","",MAX(INDEX(D:D,MATCH(LEFT(F5,LEN(F5)-1)*1-1,MONTH(B$1:INDIRECT("B"&COUNT(B:B))),1)+1):IF(LEFT(F5,LEN(F5)-1)*1=MONTH(INDIRECT("B"&MATCH(MAX(B:B),B:B,0))),INDEX(D:D,MATCH(MAX(B:B),B:B,0)),INDEX(D:D,MATCH(LEFT(F5,LEN(F5)-1)*1,MONTH(B$1:INDIRECT("B"&COUNT(B:B)))),1))))

akbbb75
質問者

補足

ご回答、ありがとうございます。 何か複雑な関数なので何を参照しているのかが分かりません(すいません)全く同じ関数を入力しましたが参照する事ができませんでした。何か私がやり方を間違っているのでしょうか??

関連するQ&A