• ベストアンサー

最大値MAXを、最小値MINと(ABS?)で作りたい。

最大値MAXを、最小値MINと(ABS?)で式を作りたい。 下記のデータのときに、 L123>0のとき  MAX(L123:L147)  最大値は1.181787 L123<0のとき  MIN((L123:L147)) 最小値は-2.725490です。 そこで、質問です。 下記のようにMINとABSを使い擬似最大値の式を作りました。 =MIN(ABS(L123:L147)) 擬似最大値は0.029886の結果を出したいのです。 しかし、「=MIN(ABS(L123:L147))」では「0.368062 」となります。 これはABS(L123)の値です。 上記「MINとABSの擬似最大値は0.029886」 となる式を教えてください。 (L123からL147のデータは下記のとおりです。 上記「MINとABSの擬似最大値は0.029886」 となる式を教えてください。) -0.368062 ,0.207454 ,0.085564 ,0.432480 ,1.099316 ,0.971129 ,1.181787,0.815206 ,1.118215 ,0.494807 ,0.602503 ,0.550321 ,0.029886 ,0.081306 ,-0.792841 ,-0.606078 ,-0.194655 ,-0.164800 ,-0.673720 ,-1.137632 ,-0.852141 ,-0.951941 ,-2.333839 ,-2.469809 ,-2.725490

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

  • ベストアンサー
  • NCU
  • ベストアンサー率10% (32/318)
回答No.1

>しかし、「=MIN(ABS(L123:L147))」では「0.368062 」となります。 それは式が123行目に入力されているからです。 たとえば次行にあれば 0.029886 を返すはずです。 >上記「MINとABSの擬似最大値は0.029886」 となる式を教えてください。 Shift+Ctrl+Enterで配列数式として入力して入力して下さい。 ところで「擬似最大値」という言葉はどこで使われる用語なのでしょう? また、「L123>0のとき」、「L123<0のとき」は意味不明です。 ついでにいえば、回答者にとっては「L123からL147」である必要は全くないのでは?

saru999
質問者

お礼

NCUさん、書き込みありがとうございます。 (長文のため続きを投稿しようとしたら質問者は書き込めないとのことでここでかかせていただきました。失礼しました。) >>>しかし、「=MIN(ABS(L123:L147))」では「0.368062 」となります。 >それは式が123行目に入力されているからです。 >たとえば次行にあれば 0.029886 を返すはずです。 えーと。よくわからないんのですが。 =MIN(ABS(L123:L147))では、まずABS(L123からL147の範囲で)マイナスの数値はプラスに変えて、そのうちで一番小さい数をだす(ゼロにより近い数をだす)と思って書いたのです。 間違っていますか? >>上記「MINとABSの擬似最大値は0.029886」 となる式を教えてください。 >Shift+Ctrl+Enterで配列数式として入力して入力して下さい。 配列数式ですね。本を見てまた改めて返答させていただきます。 取り急ぎお礼のみ書かせていただきました。 >、「L123>0のとき」、「L123<0のとき」は意味不明 1つの式を作ったらその式をコピペで使います。 その場合に必要なのです。 >「擬似最大値」という言葉 私の造語です。 掲示板で「MINとABSの…」と繰り返し書くより短文になるので書きました。 失礼しました。それでも投稿は800字を超えて一度ではかけませんでした。 掲示板のための字数を少なくする工夫としてご了承ください。 >回答者にとっては「L123からL147」である必要は全くない おっしゃるとおりです。ただ、MAXやMIN関数は30個までという制限があると聞きましたので今回の数字が25個の範囲内との意味から書かせていただきました。 書き込みありがとうございました。

saru999
質問者

補足

書き込みありがとうございます。 (長文のため:質問の続きを投稿できなかったので続きを書きます。) (以下、未投稿) なお、現時点で作成中なのは下記の式です。 ややこしいのでポイントのみお伺いしました。 ご了承ください。 当初は「IF(論理、真、偽)を「=IF(L123>0、式1、式2)」と書きました。しかし、これではエラーになりました。 IF文の中にさらに(式1という)IF文をつくったからでしょうか。 そこで、下記式1と式2を1つの式にすることを試みています。 しかし、上記「MINとABSの擬似最大値は0.029886」というのがうまくできません。 L123>0のとき =IF(((L123-P123)-(P123*(MAX(L123:L147))))>0,L123)  式1 L123<0のとき =IF(((L123-P123)-(P123*(MIN((L123:L147)))))<0,L123) 式2 L123=0のときは偽とする。               式3 この3つをひとつの式にまめたく下記のようにしました。 P123=SIGN(L123) =IF(P123^2*((L123-P123)-(P123*(MIN(ABS(L123:L147))))*P123)>0,L123) なお、このMAXの代わりにMINとABSとすると次のようなことが起こることは了承済みです。 それは、2、1、0、-1、-2、-3のときに本来はMAX2です。しかし、MINとABSでは結果が0となることです。 そこはデータの特性ゆえクリアーできるのです。 よろしくお願いします。 (データ:L123からL147のデータは下記のとおりです。:上記と同じ数字です。) -0.368062 0.207454 0.085564 0.432480 1.099316 0.971129 1.181787 0.815206 1.118215 0.494807 0.602503 0.550321 0.029886 0.081306 -0.792841 -0.606078 -0.194655 -0.164800 -0.673720 -1.137632 -0.852141 -0.951941 -2.333839 -2.469809 -2.725490

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

=MIN(ABS(A1:A25)) を配列関数として入力したら、あっさり最小の絶対値である0.029886になりましたね。 #03さんの補足を見ましたが、数式バーに、=MIN(ABS(L123:L147) を入力してEnterの代わりにShift+Ctrl+Enter を入力すればよいのです。範囲指定の時にShift+Ctrlは押す必要はありませんよ

saru999
質問者

お礼

ありがとうございます!!! できました。 はずかしながら、できなかった理由を欠かせていただきます。 「Shift+Ctrl+Enter」を「Shift+Space+Enter」と思い違いをしていました。 1時間以上3つのボタンを押し続け「うまくいかない!」。 本をひっくり返し、ネットで検索し「途方にくれていました。」 皆様、ありがとうございました。 心よりお礼申し上げます。

  • NoBi18
  • ベストアンサー率53% (7/13)
回答No.3

「疑似最大値」などという造語を持ち出すまでもなく「絶対値が最小である値」、もしくは「最も0に近い値」で十分だと思います。 解答としては、NCUさんの 「Shift+Ctrl+Enterで配列数式として入力して下さい。」 これが全てですね。数式バーの表示は {=MIN(ABS(L123:L147))} になります。{}は自分で入力するものではなく、Shift+Ctrl+Enterを押すことで自動で入力されるものです。

saru999
質問者

お礼

書き込みありがとうございます。今、書籍で確認したところ配列数式はEXCEL2000以降のようです。 私のは古くてEXCEL97です(涙)。

saru999
質問者

補足

私の勘違いでした。EXCEL97でもヘルプに配列数式「Shift+Ctrl+Enter」の記述がありました。 とりいそぎ、お詫びとお礼を申し上げます。 いま本を見ながら「Shift+Ctrl+Enter」をしていますがうまくいきません。範囲をドラッグし「Shift+Ctrl+Enter」をするとSHIFT+CTRLで範囲がやたら広くなり失敗。ひとつセルだけをして「Shift+Ctrl+Enter」を押すと行ごと指定範囲が変わってしまいます。数式入力用に「=」のところで押しても変わらず。う~ん。困っています。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.2

訂正します。 (誤)たとえば次行にあれば 0.029886 を返すはずです。 (正)たとえば次行にあれば 0.207454 を返すはずです。

関連するQ&A

  • Excel2007 条件付き書式 MIN及びMAXがうまくいかない

    Excel2007です。 条件付き書式で行方向にMAX(最大値)及びMIN(最小値)を塗りつぶしのため、画像で B2:G8を選択 セルの値が 次の値に等しい =MIN(B2:H2) 塗りつぶし赤 セルの値が 次の値に等しい =MAX(B2:H2) 塗りつぶし青 をせっていしたところ 画像のように複数のセルが塗りつぶされてしまいました。 書式設定方法に誤りがありますか? ある場合 条件付き書式の設定をどのようにすれば、最小値、最大値のみ書式を設定できますか。 お教え下さい。よろしくお願いします。

  • エクセルで特定のマイナス値を除く最大値と最小値について

    エクセルで、ある特定の値(-99999)を除く最大値と最小値を =MAX(IF(A1:A10<>-99999,A1:A10,"")) =MIN(IF(A1:A10<>-99999,A1:A10,"")) の配列数式を使って求めました。 ただ、A1:A10がすべて-99999の場合、0がかえってきてしまいます。 この場合、-99999と表示するにはどのようにすればよいのでしょうか? 1つの式で、上記2つの処理をするにはどのようにすればよいのでしょうか?

  • excelで決まった間隔の最大最小を求める

    excelで縦に1分おきのデータが並んでいます。 これを100行ずつくくってその範囲の最大、最小を求め 以後それを繰り返し行いたいのですが方法がわかりません。 =MIN(A1:A100) でそれ以降を=MIN(A1+100:A100+100)の ような感じにはいかないのでしょうか? いい方法があれば教えて下さい。 例)1日100個のデータがあります。その中からMIN/MAXを選んで 以降毎日のMIN/MAXのデータのみを抽出してグラフ化したい。

  • 入力された入力値と最大値、最小値を表示させるプログラムで、最大値と最小

    入力された入力値と最大値、最小値を表示させるプログラムで、最大値と最小値のプログラムを下記に作成してみたら最小値が0になりました。そして、もう一つ繰り返し文を作ってみたら、最大値・最小値がうまく表示されました。この違いはどうしてですか?教えてください。 import java.io.*; class Hairetu1 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("データはいくつですか?"); String str = br.readLine(); int num = Integer.parseInt(str); int a[]=new int[num]; int i; int max=0; int min=a[0]; for(i=0; i<a.length; i++){ System.out.print((i+1)+"番目は?"); str = br.readLine(); int tmp = Integer.parseInt(str); a[i] = tmp; if(max<tmp){ max=tmp; } if(min>tmp){ min=tmp; } } System.out.println("入力した値は"+test.length); System.out.println("最大は"+max); System.out.println("最小は"+min); } }

    • ベストアンサー
    • Java
  • Excel2003 VBA 最大値と最小値の求め方

    自分でいろいろ調べてみたのですが、ちょっとわからなくて質問させて頂きます。 VBAのコードにMINとMAX関数を入れて日付の最大値と最小値を求めたいのですがうまくいきません。 処理の初めに、対象の列には書式をYYYY/MM/DDの書式にし、そのあと最大値と最小値を変数に入れて求めています。 値を入れる変数はデータ型にしています。 表には2008/3/12など表示されているのに、MAX,MINともに変数の値は0でした。 どうしてこうなるのか見当もつきません。 よろしければ、返答お願いします。

  • 最大値と最小値の求め方

    以下はコマンドライン引数で任意の数の整数を受け取って、合計・平均・最大・最小を求めようとしたソースです。 しかし、実行したら最大値と最小値が正しく出ませんでした。 if文が間違っているのかもしれないと思ったのですが、はっきりと『ここが間違っている』という場所が分かりません。 どうかご指摘お願いします。 class Choco { public static void main (String[] args) { int i; int sum = 0; int max; int min; for ( i=0; i<args.length; i++) sum += Integer.parseInt(args[i]); double ave = sum/args.length; max = args.length; min = args.length; if (args.length>max){ max = args.length; } if (args.length<min){ min = args.length; } System.out.println("合計は" + sum + "です。"); System.out.println("平均は" + ave + "です。"); System.out.println("最大値は" + max + "です。"); System.out.println("最小値は" + min + "です。"); } }

    • ベストアンサー
    • Java
  • 配列数式を用いて、最小値を表示させたい

    配列数式について教えてください。 先回、こちらで質問させていただいて、なんとか理解できつつあります。回答していただきました方、どうもありがとうございました。 一応の理解はできたのですが、応用しようとしたところ、うまく数値が表示されてこないため、再度質問させていただきたいと思います。どうかよろしくお願いいたします。 表を添付いたしましたが、1月2日から4日までで、時間ごとにその最大値と最小値が表示されています。 今回、1月2日に合致したデータで、配列数式を用いて、その最大値と最小値を表示させようとしました。 その結果、最大値はちゃんと表示されるにも関わらず、最小値の値が「0」の表示となってしまいます。 最大値の式は MAX((A2:A10="1月2日"*1)*C2:C10) 最小値の式は MIN((A2:A10="1月2日"*1)*D2:D10) としています。 どこがまちがっているのでしょうか? ご教授、よろしくお願いいたしますm(_ _)m

  • MAXデータから0を除いたMINデータを引きたい

    早速ですが、エクセルでセルに A1 2 A2 4 A3 0 A4 1 A5 3 がある場合、最大値は=MAX(A1:A5)で、0を除く最小値は=MIN(IF(A1:A5=0,"",A1:A5)で求められますがA6セルにMAX値から0を除くMIN値を表示させたく考えています。 計算式を=MAX(A1:A5)-MIN(A1:A5)だと0が含まれ、=MAX(A1:A5)-MIN(IF(A1:A5=0,"",A1:A5)だと、エラー(#VALUE!)となります。 どう設定すればよいか、ご知見ある方、ご教授よろしくお願いします。

  • ExcelのMINとMAXを下から(上から)2つ出したい。

    エクセルの集計表にて、 右端に合計と平均を出していて そこに最大値と最小値を付け足したいのですが とりあえず、 =MAX(A1:K1)や=MIN(A1:K1)で最大&最小を出す事は出来たのですが、 2番目に大きい数値、2番目に小さい数値を出すにはどうすれば 良いのでしょうか? 教えて下さい。宜しくお願い致します。

  • 連番のMin, Maxを取得したい

    連番のMin, Maxを取得したい 下記のデータが格納されたテーブルで、 部署コードのまとまりごとに、連番のMin, Maxを取得したいと 考えています。 SQLで、期待する結果を取得したいのですが、 なかなかよい案がなく、困っております。 何かよいアイデアがあれば、ご教授頂きたいと思い、質問致しました。 対象DBは、 SQLServer2008 Standard Editionです。 検索するテーブル RENBAN      BUSYO_CD ---------------------------------------- 1          AAA 2          AAA 3          AAA 4          AAA 11          BBB 12          BBB 13          BBB 21          AAA 22          AAA 23          AAA 24          AAA ---------------------------------------- 期待する結果 BUSYO_CD   RENBAN_MIN   RENBAN_MAX -------------------------------------------------------------- AAA       1         4 BBB       11         13 AAA       21         24 -------------------------------------------------------------- ※データは、あらかじめ連番(昇順)でソートされています ※連番は、部署コードが同じ間は、続き番号となっていますが、  部署コードが変わると、続き番号にならない可能性があります。 ※同じ部署コードのまとまりが、複数回出てくることがあります。  (上記例でいえば、連番1~4のAAAと、21~24のAAAは同じ部署コードです) よろしくお願い致します。

専門家に質問してみよう