如何使用 Google 工作表中的 IFS 和 AND 函数根据数字的小数位数创建条件?

How to make a condition based on the number of decimals a number has with the IFS and AND functions in Google Sheets?

我正在尝试在 Google 表格中执行以下操作:

如果单元格 A1 中的数字有 4 位小数(例如“1.0001”),并且如果单元格 A1>B1(例如 A1=1.0001 和 B1=0.0001),并且如果单元格 C1 中的字符串 = "Good",然后 return (A1-B1)*10000.

另外:

如果单元格 A2 中的数字有 2 位小数(例如“1.01”),并且如果单元格 A2>B2(例如 A2=1.01 和 B2=0.01),并且如果单元格 C2 中的字符串 = "Great",然后 return (A2-B2)*100.

到目前为止,我想出了这个 IFS 函数:

=IFS((AND(A1>B1, C1="Good")), (A1-B1)*10000,(AND(A2>B2, C2="Great")),(A2-B2)*100,TRUE,"ERROR")

在 AND 公式中处理两个参数 A1>B1, C1="Good" / A2>B2, C2="Great"。

如何将小数参数添加到 AND 语句?

我想过这样设置:

=IFS((AND(A1>B1, C1="Good", **A1=(a number with 4 decimals)))**, (A1-B1)*10000,(AND(A2>B2, C2="Great", **A2=(a number with 2 decimals)))**,(A2-B2)*100,TRUE,"ERROR")

其中语句:

A1=(一个小数点后四位的数字)

A1=(一个带两位小数的数字)

会成功的。

你如何制定那些缺失的"decimal statements"?

这取决于您是指精确的 4 位小数,例如 1.0001,还是至少 4 位小数,其中包括 1.000123。

您可以使用舍入(或舍入或舍入)来测试小数,所以在第一种情况下:

=ifs(and(round(A1,3)<>A1,A1>B1,C1="Good"),(A1-B1)*10000,and(round(A2,1)<>A2,A2>B2,C2="Great"),(A2-B2)*100)

但如果您希望它正好是 4 位小数:

=ifs(and(round(A1,3)<>A1,round(A1,4)=A1,A1>B1,C1="Good"),(A1-B1)*10000,and(round(A2,1)<>A2,round(A2,2)=A2,A2>B2,C2="Great"),(A2-B2)*100)

一击解决:

=ARRAYFORMULA(
 IF((LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A1:A), "\.(.*)")))=4) * 
    (A1:A>B1:B) * (C1:C="Good"),     (A1:A-B1:B)*10000,
 IF((LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A1:A), "\.(.*)")))=2) * 
    (A1:A>B1:B) * (C1:C="Great"),    (A1:A-B1:B)*100, )))