プロが教えるわが家の防犯対策術!

エクセルで、ある特定の値(-99999)を除く最大値と最小値を

=MAX(IF(A1:A10<>-99999,A1:A10,""))
=MIN(IF(A1:A10<>-99999,A1:A10,""))

の配列数式を使って求めました。

ただ、A1:A10がすべて-99999の場合、0がかえってきてしまいます。
この場合、-99999と表示するにはどのようにすればよいのでしょうか?

1つの式で、上記2つの処理をするにはどのようにすればよいのでしょうか?

A 回答 (2件)

修行中の身なので『指導』は勘弁してください。

:D

>最大値は-99999以外の値がすべてマイナス値の場合に0がかえってきてしまいます。
提示の式
>=MAX(IF(A1:A10<>-99999,A1:A10,""))
これでも同じですよね?
なので空白セルはないと判断しました。

あるなら、ベタですが
=IF(AND(A1:A10=-99999),-99999,MAX(IF(A1:A10<>-99999,IF(A1:A10<>"",A1:A10,""))))
の配列数式で。

#他の方の案もお待ちになられたほうが良いかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます!できましたm--m。空白セルはありません。本当に助かりました。感謝いたします。

お礼日時:2008/10/30 22:11

素直に


=IF(AND(A1:A10=-99999),-99999,MAX(A1:A10*(A1:A10<>-99999)))
の配列数式では?
    • good
    • 0
この回答へのお礼

ありがとうございます。教えていただきました式を使いますと、すべて-99999の場合には-99999と表示されましたが、最小値、-99999以外の値がすべてプラス値の場合に0がかえってきてしまい、-99999以外の値を求めることができません。
また、最大値は-99999以外の値がすべてマイナス値の場合に0がかえってきてしまいます。
よろしければ、ご指導お願いいたします。

お礼日時:2008/10/30 14:40

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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

Aベストアンサー

配列関数を使用することになります。
=MIN(IF(A1:A100=0,"",A1:A100))
と入れて、 Ctrl+Shift+Enter で決定します。
式が{}でくくられますが、
中身のIF文の通り、A1~A100のセルで0の値は 空白、それ以外はそのまま
で一度計算してその中の最小値を出します。

QExcelでエラー(#N/Aなど)値を含む範囲で最大値や最小値をもとめ

Excelでエラー(#N/Aなど)値を含む範囲で最大値や最小値をもとめようとすると、エラーが返ってしまいます。
エラーを無視して最大値や最小値を求めることは出来ないのでしょうか?

Aベストアンサー

基本的にエラーを出ないような数式にすることをお勧めしますが、どうしてもエラーを含む場合にも最大値を計算したいなら以下のような配列数式を利用します。

=MAX(IF(ISNUMBER(範囲),範囲,""))

配列数式にするため、入力後Ctrl+Shift+Enterで確定してください。

Qエクセル、正数のみの集計[(負)を除外]

お世話になります。
すごく、シンプルだと思っていたのですが、意外と難しく苦戦しております。
データの中から、正数のみを取り出して集計したいのですが、どのようにしたら良いでしょうか。データが多いので、if関数で、ひとつひとつのセルに「+か-か」と条件をつけて計算するわけにもいかず、、、。

よろしくご教授ください。

Aベストアンサー

SUMIF関数があります。
http://www3.tokai.or.jp/excel/kansu/sumif.htm

QExcelで最大値の入っている数値の右側にある項目名を拾いたい。

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

Aベストアンサー

こんばんは!
一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m

QMAXIFはどうすればいい?

AVERAGEIFはありますが、maxでほしいのです。どうやって作れますか?

詳細:
B列が「あ」のデータだけ抜き出し、A列のmax値を得たいのです。
A    B
1   あ
2   い
4   あ
8   え
15  い
この例ではmax値は4です。

Aベストアンサー

>MAXIFはどうすればいい?
MAX関数の括弧内(配列)を前処理しなければなりません。
前処理の数式=(B1:B5="あ")*A1:A5
従って、=MAX(B1:B5="あ")*A1:A5 → MAX({1;0;4;0;0}) → 4
Excelでは計算結果を配列で返すことを要する数式を入力時にCtrlとShiftを押しながらEnterキーを打鍵することになっています。
確定した状態を数式バーで見ると{=MAX(B1:B5="あ")*A1:A5}のように数式を大括弧で括られています。

SUMPRODUCT関数の引数としてMAX関数の返り値を設定するとEnterキーで確定しても目的通りの値が返ります。
=SUMPRODUCT(MAX((B1:B5="あ")*A1:A5))
どのような数式を使っても結果が目的に合えば良いのでお好きな方法で解決してください。

QエクセルのMAX関数を複数条件で

エクセルのMAX関数を下記のような複数条件をつけて
使いたいのですが、自分で式を書いてもうまくいきません。
アドバイスをよろしくお願いします。

A1に「部署名」、B1に「受注個数」、C1に「受注日」と見出しをし
(A2:C9)にデータを入力した表があるとします。
部署名には営業1部、営業2部、営業3部のいずれかが入力されていて、
受注日には6月22日と、6月23日のいずれかの入力があるとします。
この表で「営業1部」であり、「6月22日」のものである受注個数の
最大の値を返したいのです。
日付「6月22日」は別途(E2)に参照用として入力したものを使いたいです。

=MAX(IF(AND(A2:A9="営業1部",C2:C9=E2),B2:B9,""))

これではダメでしょうか。
初歩的ですみません、よろしくお願いいたします。

Aベストアンサー

DMAX関数を使うことで、可能です。
(配列数式を使う方法もありますが、他にも流用したいという要望もあるようですので
 こちらのほうがよいでしょう)

DMAX(Database,フィールド,Criteria)
http://excel.onushi.com/function/dmax.htm

Qエクセル 条件つきで最小値を求めたいです

A列に200名を超える生徒の名前が入っています。
B列に計算テストの結果が入っています。
計算テストは何度も行われており、A列に何度も同じ生徒の名前が出てきます。A列に入っている生徒の名前は1000を超えます。
A   B
田中  42
佐藤  48
鈴木  52
佐藤  56
田中  72
鈴木  60
鈴木  23
などです。この中で鈴木君のとった得点の最小値は23点ですが、それを求める数式を知りたいです。
『rankif』とか『minif』みたいな関数があればいいのですが、ないですよね。ちなみに、私が使用しているパソコンはexcel2000です。
他のシートやC列から右に生徒を判別する関数を入れていけば、私の知っている知識でも可能なのですが、関数を多用すると重くなりますし、避けたいです。また、もともとのデータの入力の仕方を変えたらいいのですが、それはできない状態です。
=MIN(IF(A2:A7="鈴木",B2:B7),false)
みたいな感じかなと式を立てたのですが、うまくいきません。上の状態で、セルに23と表示されるには、どうすればいいか教えてください。お願い致します。m(_ _)m

A列に200名を超える生徒の名前が入っています。
B列に計算テストの結果が入っています。
計算テストは何度も行われており、A列に何度も同じ生徒の名前が出てきます。A列に入っている生徒の名前は1000を超えます。
A   B
田中  42
佐藤  48
鈴木  52
佐藤  56
田中  72
鈴木  60
鈴木  23
などです。この中で鈴木君のとった得点の最小値は23点ですが、それを求める数式を知りたいです。
『rankif』とか『minif』みたいな関数があればいいのですが、ないですよね。ちなみに、私が使...続きを読む

Aベストアンサー

>式を立てたのですが、うまくいきません。
⇒=MIN(IF(A1:A7="鈴木",B1:B7))
この数式は、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

Qエクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

例えばこんなデータなのですが、

2002/07/01 99 25 36
2002/07/05 55 33 25
2002/08/01 80 20 51

日付の入っている列を検索して、2002/07/01から2002/07/31
の範囲ならば、その行のデータを別のシートに抽出したいのですが、
日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら
between 9999/99/99 and 9999/99/99って感じで簡単にできるの
ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って
>=2002/07/01
<=2002/07/31
と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して
くれると考えたのですが、なぜかダメでした。
(↓こういう入力をしました)
=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

Aベストアンサー

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

------------余談--------------------------
ご質問の条件例の場合特例で 2002/7でればOKなので

=IF(TEXT(Sheet2!A1,"yyyym")="20027",Sheet2!A1,"該当月ありません")

でも可能ですね!

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

--...続きを読む

Qエクセルで負数の最大値を求めたい

教えてください。正数と負数が混在する1列から、負数の最大値を求めたい。

Aベストアンサー

A1:A10に数値が入力されているとして、適当なセルに
=MAX(IF(A1:A10<0,A1:A10,""))
と入力し、ShiftキーとCtrlキーを同時に押しながらEnterで確定
としてください。(配列数式を使います。配列数式については下記参照)

http://pc21.nikkeibp.co.jp/special/hr/hr3.shtml

参考URL:http://pc21.nikkeibp.co.jp/special/hr/hr3.shtml

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


人気Q&Aランキング