行から0を除外してMIN値を取得する方法を知る必要があります。
しかし、F1 Cellを除外する必要もあります。
例:
A B C D E F
1 0 18 20 0 150 = 18
しかし、= MIN(A1、B1、C1、D1、E1)でExcelでこれを行うと、0が返されます。
どんな助けも大歓迎です。
この式を試してください
=SMALL((A1,C1,E1),INDEX(FREQUENCY((A1,C1,E1),0),1)+1)
SMALL関数とFREQUENCY関数はどちらも、引数として「共用体」を受け入れます。つまり、コンマで区切られ、(A1、C1、E1)のような括弧で囲まれた単一セル参照です。
したがって、式はFREQUENCYとINDEXを使用して範囲内のゼロの数を見つけ、それに1を追加すると、k番目の最小値が常にゼロを除く最小値になるようにk値を取得します。
私はあなたが負の数を持っていないと仮定しています.....
結果セルに以下を入力し、Enterを押しながらCtrl&Shiftを押します。
=MIN(If(A1:E1>0,A1:E1))
最も効率的な方法は、以下に示すようにSMALLおよびCOUNTIF数式を使用することです。
SMALLデータセットのk番目に小さい値を返します。
= SMALL(A1:A100、COUNTIF($ A $ 1:$ A $ 100,0)+1)
ここで、countifは範囲(+1)のゼロをカウントしており、SMALLにk番目の最小値を返すように指示するために使用されます。
クレジット: link
ここで何が欲しいのか完全にはわかりませんが、範囲内の空白セルを割り引いてゼロを渡す場合は、これを実行します。少し不自然な場合:
=MIN(IF(A1:E1=0,MAX(A1:E1),A1:E1))
配列としてCtrl + Shift + Enterを使用します。
ここで行っているのは、リストの最大値でゼロを置き換えることです。
リングに帽子を投げる:
1)最初に、0以外のゼロと1のゼロを評価して、整数のセットでNOT関数を実行します
2)次に、元の整数セットでMAXを検索します
3)次に、ステップ1で生成されたセットの各数値にステップ2で見つかったMAXを乗算し、1を0に、ゼロをMAXに設定します
4)次に、ステップ3で生成されたセットを元のセットに追加します
5)最後に、ステップ4で生成されたセットでMINを探します
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
数値の大まかな範囲がわかっている場合は、MAX(RANGE)を定数に置き換えることができます。これは物事をわずかに高速化しますが、それでも高速機能と競合するには十分ではありません。
また、5000回の整数のデータセットに対して、5000回実行される式を使用したクイックテストを実行しました。
{=SMALL(A1:A5000,COUNTIF(A1:A5000,0)+1)}
1.700859秒経過| 5,301,902ティック経過
{=SMALL(A1:A5000,INDEX(FREQUENCY(A1:A5000,0),1)+1)}
1.935807秒経過| 6,034,279ティック経過
{=MIN((NOT(A1:A5000)* MAX(A1:A5000))+ A1:A5000)}
.127774秒経過| 9,749,865ティック経過
{=MIN(If(A1:A5000>0,A1:A5000))}
.287850秒経過| 10,248,852ティック経過
{"=MIN(((A1:A5000=0)* MAX(A1:A5000))+ A1:A5000)"}
.328824秒経過| 10,376,576ティック経過
{=MIN(IF(A1:A5000=0,MAX(A1:A5000),A1:A5000))}
.394730秒経過| 10,582,017ティック経過
すべての値が正の場合、-max(-n)を実行できます
リストされているソリューションは、私にとってはうまくいきませんでした。最も近いのはチーフ・ウィッガムでした-彼の答えにコメントを付けたかったのですが、そうする評判がありません。だから私は別の答えとして投稿します:
=MIN(IF(A1:E1>0;A1:E1))
次に、Enterキーを押す代わりに、Ctrl + Shift + Enterキーを押して、Excelが{
および}
をそれぞれ数式の先頭と末尾に追加します(配列の数式を有効にします)。
Chief Wiggumが提案したカンマ「、」および「If」ステートメントは、Excel Home and Student 2013では機能しませんでした。セミコロン「;」が必要フルキャップ「IF」がトリックを行いました。わずかな構文の違いがありますが、エラーと#VALUEが発生する理由を理解するのに1.5時間かかりました。
min()関数は、ブール値とストリング値を除外します。ゼロを ""(空の文字列)に置き換えた場合-min()関数は希望どおりに機能します!