• 締切済み

エクセルで指定月の最小値を抽出したいです

日頃からお世話になっております。 今回教えていただきたいのは、 エクセルにて指定月の最小値の 抽出方法が分からず困っております。 まずは、簡易化したエクセルが下記です。 ---------- シート1 ----------   A       B 1 2014/5/12 15.1 2 2014/5/23 20.8 3 2014/5/30 10.1 4 2014/6/11 25.6 ---------- シート2 ----------   A(指定月) B(最大値)  C(最小値) 1 2014/5    20.8      ● 2 2014/6    25.6      ● ---------- 上記の構成で、B1に 下記のコードを入れると 正しく最大値は抽出されます。 =MAX(INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)*シート1!B$1:B$65640,)) しかしながら、シート2のC1に 上記のコードのMAXをMINに 書き換えるだけでは最小値は 抽出してくれません。。。 何かほかに手立てはありますでしょうか? ご教授よろしくお願いいたします。>< ※ちなみにエクセルは Excel2007を使用しております。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

こんばんは! 横からお邪魔します。 あまりおススメできませんが シート2のB1セルに =MAX(IF((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)),シート1!B$1:B$65640)) C1セルに =MIN(IF((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1))*(シート1!B$1:B$65640<>""),シート1!B$1:B$65640)) どちらも配列数式になってしまいますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → Sheet2の各セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 それぞれをフィルハンドルで下へコピーしてみてください。 ※ 配列数式はPCにかなりの負担を掛けますので、結果表示に若干の時間を要すると思います。 ※ シート2の指定月のデータが全くない場合(その月のB列がすべて空白の場合)は 「0」が表示されてしまいます。m(_ _)m

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

回答No.3の訂正です。 提言しました数式に誤りがありましたので以下の数式で検証してください。 =MIN(INDEX((YEAR(シート1!A$1:A$65640)&MONTH(シート1!A$1:A$65640)=YEAR(A1)&MONTH(A1))*シート1!B$1:B$65640+(YEAR(シート1!A$1:A$65640)&MONTH(シート1!A$1:A$65640)<>YEAR(A1)&MONTH(A1))*MAX(シート1!B$1:B$65640),)) 当方ではExcel 2013で検証しました。 年月の比較を年と月を別々に比較すると論理的に不具合が起りますのでYEAR関数の結果とMONTH関数の結果を&演算子で連結した文字列比較することで解決できました。

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

No2の回答者です。 >やはりこちらも結果は「0」になってしまうようです。。 実際「シート1」という名前のシートのA列に日付、B列に数字を入力して、提示した数式を検証してみましたが、A1セルの年月のデータお一致するシート1のB列の最小値を問題なく表示できています。 もしうまくいかないのであれば、実際に入力した数式をコピー貼り付けしてみてください。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>しかしながら、シート2のC1に上記のコードのMAXをMINに書き換えるだけでは最小値は抽出してくれません。。。 はい、当然のことですがINDEX関数で配列数値を前処理した結果の最小値は0ですからMAX関数をMIN関数に書き換えただけでは目的の15.1になりません。 シート1のA列とシート2のA1が一致しないセルの値をシート1のB列の最大値に置き換えることを合わせて前処理しないと目的に合いません。 下記の式で試してください。(検証していません) =MIN(INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)*シート1!B$1:B$65640+INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)<>MONTH(A1)*MAX(シート1!B:B,)) 尚、次の式は誤りの元になりますので変更されることをお勧めします。 YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)*シート1!B$1:B$65640       ↓ (YEAR(シート1!A$1:A$65640)&シート1!A$1:A$65640)=YEAR(A1))&MONTH(A1))*シート1!B$1:B$65640

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

最小値を表示したいなら、以下のような数式に変更してください。 =MIN(INDEX(((YEAR(シート1!A$1:A$65640)<>YEAR(A1))+(MONTH(シート1!A$1:A$65640)<>MONTH(A1)))*10^10+シート1!B$1:B$65640,))

maaprv
質問者

補足

ご回答ありがとうございます! やはりこちらも結果は「0」になってしまうようです。。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

元の数式にも間違いがありますので直した上で、 =MIN(INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1))*(シート1!B$1:B$65640<>0)*シート1!B$1:B$65640,)) のような段取りにします 実際にはそんな6万個ものセルを計算させるような無意味に重たい数式にするのは止めて =MIN(INDEX((TEXT(シート1!A$1:A$1000,"yyyymm")=TEXT(A1,"yyyymm"))*(シート1!B$1:B$1000<>0)*シート1!B$1:B$1000,)) ぐらいに合理的な範囲で計算します。

maaprv
質問者

補足

さっそくのご回答ありがとうございます。 =MIN(INDEX((TEXT(シート1!A$1:A$1000,"yyyymm")=TEXT(A1,"yyyymm"))*(シート1!B$1:B$1000<>0)*シート1!B$1:B$1000,)) こちらの方向で進めようと思ってセルに入れてみたのですが、0と表示されてしまいました。

関連するQ&A

  • エクセルで指定範囲の最大値・最小値を求めたい

    エクセルで、A列、B列、C列・・・にそれぞれ100個ずつ数値データがあります。 各列で1番上のデータからn番目のデータまでの範囲の最大値・最小値と、 n+1番目のデータから100番目のデータまでの範囲の最大値・最小値をそれぞれ求めたいのです。 nの値は列ごとに異なっており、例えばA列のn値は[A105]のセルに記入されています。 [A102]=40のとき、 =MAX(A2:A40) =MAX(A41:A101) などと個別に範囲指定をせずに、[A105]の値を引用して最大値・最小値を求めるにはどうすればいいでしょうか。

  • エクセルである範囲の中での最大値、最小値を簡略に抽出する方法について

    はじめまして、この度はよろしくお願いします。 エクセルで例ば A列        B列        C列 0.0367659      a 0.033633907 0.025824788 0.020930498 0.011846518 0.006997131 0.002075281 -0.001972752   b -0.005546433 -0.009688783   c -0.014273939 -0.019588186 -0.023865392   d のように並んでいたとして、B列のa~b、b~c、c~d、の範囲の中でA列の最大値または最小値を求めたいのですがどのようにすればよろしいのでしょうか?(実際はabcdには数字が入ります) 今まで当方はC列に文字関数のmax,minを使い一箇所づつ範囲を指定しながらやってきたのですか、時間が膨大にかかってしまいます。 簡略に抽出できる方法があれば教えてください。

  • エクセル最小値から4つ抽出する方法を教えてください

    エクセルで指定する範囲内で、最小値から順番に4つだけ抽出する方法を教えてください。 このようなデータがあります。(実際はすべて8桁で、日付を文字列に変換したものです)   A  B  C  D  1 10    30  2 10    10 20 3 50    50 60 4    70 50 60 ・ ・ ・ A1~D1とA2~D2を1つの範囲(絶対)とし、最大で8個の数値となります。 次の範囲はA3~D3とA4~D4の8個となり、8個ずつが繰り返されます。 この8個のデータの中から重複なしで小さい順に、 A1、B1、A3、B4に反映させたいです。 こういう結果にしたい↓   A  B  C  D  1 10 20     2 30     3 50 60    4 70     ・ ・ ・ 範囲内の最大値は30と70であるため、B4は空白としたいです。 仮にそれぞれの範囲内に40と80があれば、その数値をB4に反映させたいです。 8個のデータは重複するものもあれば、しないものもあり、 空白のものもあれば、空白がないものもあります。 データ数が多いのでフィルタオプションの設定から行わないやり方で 何かあれば教えていただきたいです。 VBA、マクロができないので、関数でできればすごく助かります。 色んなサイトを検索しましたが、該当するものがなくて困っています。 よろしくおねがいします。

  • エクセル2003 最大最小値の求め方

    価格の推移を1週間単位で調べています。 ある商品のA社、B社、C社、・・・を比較して 最大値と最小値を調査する表を作成しています。 イメージ的には下記のような形の表になります。    1W  /  2W  / 3W  /4W A  1000円/1500円/    /1200円 B C D  1800円/ ・ ・ ・ 最大値1800円/1500円/   /1200円 最小値1000円/ 最大値には  =MAX(A1:A5) 最大値には =IF(SUM(A1:A5),SMALL(A1:A5,1+COUNTIF(A1:A5,0)),"") と入力したのですが、1社しか価格の回答がなかった場合 最大価格も最小価格も同じ価格になってしまします。 最大=最小となった場合、最小価格欄を空欄で表示する 数式を教えてください。 どなたか、ご教示お願いいたします。 エクセル2003を利用しています。

  • エクセルで、指定期間及び指定部門に在職する対象者を抽出したいのです。

    お世話になっております。会社の在籍者名簿を作成したいのですが、次のような課題があります。 sheet1に以下のマスターデータがあります。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  01   6000   2008/04/01 9999/12/31 3  02   1200   2008/03/01 9999/12/31 4  03    7000   2008/05/01 2008/05/20 5  04   1100   2008/03/01 9999/12/31 sheet2に期間以下の5月の在籍指定条件を設定します。 所属コード 1200及び1100 開始日付 2008/05/01 終了日付 2008/05/31 この期間内に該当する対象者が下記の通り抽出されます。   A    B     C    D     1 個人コード 所属コード 開始日付  終了日付 2  02   1200   2008/03/01 9999/12/31 3  04   1100   2008/03/01 9999/12/31 フィルタオプションの設定で抽出した際、複数の所属コードを指定して一気に抽出することは可能でしょうか?他に方法がありましたらお教え下さい。 私の質問表現に曖昧な点がありましたらお許し下さい。ご回答をいただければ嬉しく存じます。宜しくお願い致します。

  • Excel VBA で二つのシートを比較抽出

    Excel VBA で二つのシートを比較して合致するレコードを別のシートに抽出する方法について 下記ホームページのコードを利用させていただきました。 https://okwave.jp/qa/q5917011.html ●fax2シート B列(検索順)  セル1 A    2 B    3 D    4 C ●fax3シート( 比較抽出結果)  セル1 A    2 B    3 C    4 D 比較抽出結果が検索順にするにはどのようにコードを記述すればよいか教えていただけますか。

  • エクセルで2行あきのデータの最小値を抽出したいです

    エクセル2007を使って、2行あきのデータの最小金額と、 その最小値の品物を表示させたいと思っています。 ↓データはこのようになっています。 ファイルは、 ・品物購入シート ・最小値抽出シート の2シートあり、 品物購入シートの2行おきの最小値を 最小値抽出シートへ 表示させたいと思っています。  2行おきにしたいのは、品物の名前が、順番に合板、ペンキ、ネジ、 合板、ペンキ、ネジ...と同じ順番んで並んでいるためなのですが、 INDEXやMATCH関数を使ってみましたが、エラーで結果がでません でした。 《品物購入シート》    A、  B、  C、 1 金額、品物、購入日 2 120、合板、7/1 3 400、ペンキ、7/1 4 100、ネジ、6/1 5 240、合板、6/1 6 200、ペンキ、6/2 7 150、ネジ、7/2 ・ ・ データが40行くらいあります。 《最小値抽出シート》    A、  B、  C、 1 金額、品物、購入日 2 120、合板、7/1 3 200、ペンキ、6/2 4 150、ネジ、7/2 最少金額を↓このように考えてみましたが、VALUEのエラーがでてしまいました。 =IF(COUNT(MOD(ROW(),2)),MIN(MOD(ROW(),2),"-")) 説明がうまくできず申し訳ないですが、詳しい方どうか教えてください よろしくお願いします。

  • エクセルで最小値から0を除く方法

    早速ですが、エクセル入力したデータから最大値と最小値を求めようとしています。 最大値は=MAX(A1:A100)で求められるのですが、最小値には0が入っていると=MIN(A1*A100)では0となってしまいます。 0以外で最小値を求めたいのですが、どのように設定すればよいでしょうか? どなたかご教授いただけると助かります。

  • エクセル 最大値、最小値

    エクセルでの質問です。 種類  結果 A     15 A     10 B     3 C     8 C     12 C     5 D     8 の様な表から各種類の結果の最大値と最小値を取り出したいのですが、種類が1000種類程ありうまく手間がかかって出来ません。 最大値、最小値をまとめた表は、エクセルで出来ないでしょうか。よろしくお願いします。

  • 月を指定してデータを抽出する

    下記のようなデータから(テーブル)     A     B      C      D 1  年月日  会社名  商品名   金額 2 10月27日  A社   リンゴ    5000 3 10月29日  B社   みかん   8000  4 11月1日   A社   バナナ   1000 5 11月2日   C社   みかん   4000 6 11月3日   B社   ぶどう   10000 下記のような別シートの見出しのB1セルを参照して。フィルタオプションで11月のデータだけを下記のA6:D9セルのように抽出するには抽出条件のA4セルにどのような関数を入れたらよいのでしょうか?     A      B    C      D 1 平成22年  11月  売上表 2 3 年月日 4  5 6 年月日   会社名  商品名   金額 7 11月1日   A社   バナナ   1000 8 11月2日   C社   みかん   4000 9 11月3日   B社   ぶどう   10000 A4セルに条件を入れなくても抽出できる方法でも結構です。 エクセルは2010です。 教えていただける方がおりましたらよろしくお願いします。

専門家に質問してみよう