有人可以幫助我使用公式來檢查某個值是否在定義的可用步驟的最大值和最小值之間嗎?範例:可用值指定為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 進行計數,如果有的話(在本例中為 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));「確定」;「錯誤」);IFERROR(IF(AND(INT( (A2-A1)/C1)=(A2-A1)/C1=TRUE;(A2-A1)/C1<=(B1-A1)/C1;(A2-A1)/C1>=0);「確定";"錯誤");"注意!
'筆記!由於某種原因,該公式產生了一個我無法真正理解的錯誤。在下面的公式中,我預期儲存格 A6 和 A10 中的 INT 公式等於 5。