如何使用 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, )))
我正在尝试在 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, )))