定義された使用可能なステップで値が最大値と最小値の間であるかどうかを確認する数式について、どなたか助けていただけませんか? 例: 使用可能な値は、A1 = 1 (最小制限)、B1 = 2 (最大制限)、C1 = 0.2 (使用可能なステップ) として与えられます。つまり、使用可能な値は、1、1.2、1.4、1.6、1.8、2 になります。同様に、値 1.1 は無効です。A2 の値が制限と使用可能なステップに従っていない場合、数式は「Err」を返します。数式 =IF(OR(A2B1);"Err";”ok”) は、最小値と最大値を処理しますが、使用可能なステップは処理しません。
答え1
IF(SUMPRODUCT()) を使用する
=IF(SUMPRODUCT(--(A1+C1*(ROW($ZZ$1:INDEX($ZZ:$ZZ,INT((B1-A1)/C1)+1))-1)=A2)),"OK","ERR")
(ROW($ZZ$1:INDEX($ZZ:$ZZ,INT((B1-A1)/C1)+1))-1
0 から上限に到達するために必要なステップ数までの数値の配列を作成します。
次に、その配列が math: に渡されA1+C1*...=A2
、TRUE/FALSE の配列が作成されます。SUMPRODUCT は TRUE をカウントし、TRUE がある場合 (この場合は 1 または 0)、If は TRUE を返します。
動的配列 (Office 365 でのみ使用可能) を使用すると、これを短縮できます。
=IF(OR(SEQUENCE((B1-A1)/C1+1,,A1,C1)=A2),"OK","ERR")
一連の手順を回避するために編集します。
=IFERROR(IF(AND(A2>=A1,A2<=B1,MOD(ROUND((A2-A1)/C1,10),1)=0),"OK","Err"),"Nb! Check ""Step"" input")
答え2
「=IF(SUMPRODUCT)」式でいくつかの問題が発生します... 1) 式では、可能なステップ数に制限があります。 2) 式がさまざまなワークブックに自由にコピーされるため、$ の使用は避けます。
別の式を見つけました (「Iferror」の前の部分は、ステップが定義されていない場合を処理します)。
=IF(C1="";IF(AND(A2>=MIN(A1:B1);A2<=MAX(A1:B1));"ok";"Err");IFERROR(IF(AND(INT((A2-A1)/C1)=(A2-A1)/C1=TRUE;(A2-A1)/C1<=(B1-A1)/C1;(A2-A1)/C1>=0);"ok";"Err");"注意! 「ステップ」の入力を確認してください"))
注意: 何らかの理由で、数式によって、よくわからないエラーが発生します。以下の数式では、セル A6 と A10 の INT 数式が 5 になるはずです。