• ベストアンサー

別シートにあるその月の最大値を取得したい。

次のような処理を考えています。   A    B     (シート1) 2001/1/1 10000 2001/1/2 13000   :   : 2001/1/31 25000 2001/2/1 28000   :   : B列は累計値です。(つまり、月末日がその月の最大値です。) ここで、シート2からシート1の毎月末の値を取得したいと思っています。 以下は例です。   A   B   C 2001年  1月   2月  ・・・   (シート2) 最大値 25000  ??? つまり、A1の年とB1の月と合致するシート1の月末日の値を、B2に取得 したいのです。(この例では2001/1/31の値が取得したい。) VLOOKUPとMAXを組み合わせてなんとか、と思いましたが、いい方法が 思い浮かびません。何か方法はあるでしょうか? (ワークシート関数だけで解決できるでしょうか?)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

#4です。 >やはりあらかじめ大きな数値を指定しておくしかありませんか? SUMPRODUCT関数は列全体・行全体は指定できません。 $A$2:$A$65535 のような全体から1行だけ除いた範囲にするしかありません。 ※Office2003までは同じです。来年発売予定の2007では確認してません。

nozomi300k
質問者

お礼

よくわかりました。勉強になりました。 ありがとうございました。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

月末固定でいいなら =VLOOKUP(DATE(2001,1+1,0),シート1!$A$2:$B$100,2,FALSE) ※DATE(2001,2,0)=DATE(2001,2,1)-1="2001/1/31"です。 年と月の数値を別セルの参照にすればいいでしょう。 サンプルの場合表示形式をユーザー定義で「0000"年"」「0"月"」とすれば見かけは同じで出来ます。  最大値でいいならこんな方法もあります。 =SUMPRODUCT(MAX((TEXT(シート1!$A$2:$A$100,"yyyymm")="200101")*(シート1!$B$2:$B$100)))

nozomi300k
質問者

お礼

確かにできました。ありがとうございます。 もう一点だけご教示頂きたいのですが・・、 月末固定ではないのでSUMPRODUCTを使った方式でやってみましたが、 「シート1!$A$2:$A$100」のように範囲を明確に指定しないと#NUM!に なるようです。シート1のデータ件数はACCESSからEXPORTするため 流動的(正確には増える一方)なのですが、件数を指定しなくても 済む方法はないでしょうか?(やはりあらかじめ大きな数値を指定 しておくしかありませんか?)

noname#204879
noname#204879
回答No.3

「シート2からシート1の毎月末の値を」は「シート1からシート2の毎月末の値を」の間違いですね。 Sheet2!B2: =VLOOKUP(DATE($A1,B1+1,0),Sheet1!$A:$B,2,FALSE)

  • sydneyh
  • ベストアンサー率34% (664/1947)
回答No.2

sheet1にある表に、新たに「年」「月」の列を2列増やせば、ピボッドテーブルで簡単に出来ると思います。 ピボッドテーブルはお分りでしょうか。 これは、列ごとに蓄積された数値や値を、自分の好きなようにレイアウトしたり、集計したりできる表のことです。 表形式でいうと、年別を縦の見出し、月別を横の見出しにして、あとは中の集計を「最大値」にします。 そして、sheet2に作成場所を指定してあげれば、出来上がりです。 ピボッドについては、Excelヘルプでもきちんと載ってますので、まずはお試しを。 これを覚えるといろいろと使えますよ。

nozomi300k
質問者

お礼

ご回答ありがとうございます。 ピボッドの有用性は認識しているつもりですが、まだまだ勉強不足です・・・。(^^;) これからも勉強していきます。ありがとうございました。

  • teg354
  • ベストアンサー率21% (49/223)
回答No.1

ピボットはどうですか?

関連するQ&A