2017-04-14 12 views
1

私はExcelのスプレッドシートに2つの列(最初は日付、2番目は値)を持っています。日付は数年にまたがります。私は各年の最大値を取得する関数を記述したいと思います。次のデータセットにおける例えばExcel、日付範囲を基準にした最大値

、: 2009年6月3日3 2009年6月5日5 2010年1月1日7 2010年7月7日1 2013年4月1日12 2013年5月2日77

2013年に値7 に機能を返します2009年度

機能は、2010年に値3 に機能を返す日付の77

すべてが列Aにある値を返します すべて値が列Eにある 列JIには、必要な年のリスト、つまりJ1 = 2009、J2 = 2010、J3 = 2011などがあります。

各年の関数は、 2009年の最大値はセルK1、2010年の最大値はセルK2などです。

この関数は次のようになります: = MAX )私にすべてのヘルプ

答えて

0

あなたCAの

おかげで、年間の日付の範囲を提供しますn個の使用:+ が同時にを入力し
=MAX(IF(YEAR($A$2:$A$9)=J1,$E$2:$E$9,0))
配列数式プレスCtrlキー + Shiftキー
は、あなたはそれを
$ A $ 2ドラッグすることができます:$ A $ 9日$の列を絶対参照は変更のためにあなたの最後の行
$ E $ 2へ:$ E $ 9個の値の列が
た場合をドラッグすると、日付の年をテストするとき、それは自動的に変更されます新しい列の最初の日、あなたの最後の行に
J1を、それを変更J1に戻ってthを返すe対応値

-1

私は自分自身の質問に答えることができました。私は配列としての日付と値に対応する列を定義した場合、私は次の関数を使用することができます。

=MAX(IF(Transaction_Date<=DATE(J1,12,31),IF(Transaction_Date>=DATE(J1,1,1),Account_Balance))) 
0

はのは、この例を考えてみましょう:

+---+------------+------+-------+-------------+ 
| |  A  | B | C |  D  | 
+---+------------+------+-------+-------------+ 
| 1 | Date  | Year | Value | Max of year | 
| 2 | 03/06/2009 | 2009 | 3  | 5   | 
| 3 | 05/06/2009 | 2009 | 5  | 5   | 
| 4 | 01/01/2010 | 2010 | 7  | 7   | 
| 5 | 07/07/2010 | 2010 | 1  | 7   | 
| 6 | 01/04/2013 | 2013 | 12 | 77   | 
| 7 | 02/05/2013 | 2013 | 77 | 77   | 
+---+------------+------+-------+-------------+ 

あなたは2つの選択肢があります。

第一溶液(最も簡単)

次にあなたが列C.

の最大とピボットテーブルを作成しますが、列Aの各セルの年を計算YEARという名前の列を追加します。 2番目の解(最も難しい)

行列関数を使用します。計算された年の列Bを追加します。次にセルD2に=MAX(IF(B:B=B2,C:C))と入力し、CTRL + シフト + ENTERを入力します。 数式は、= {=MAX(SE(B:B=B7;C:C))}のように(行列関数に)変換されます。これで、セルD2を列の最後までドラッグできます(この例ではD7)。 また、@ Yassの回答としてYEAR関数を使用した2番目のソリューションを組み合わせて使用​​することもできます。

関連する問題