如何编写IF公式,根据数值自动调用Floor.Math或Ceiling.Math?
实现以90结尾的商业价格IF公式方案
核心公式
针对任意数值(如$3.945、$123.456等),可以使用以下IF公式实现需求:
=IF(INT(MOD(A1*100,10))>=5, CEILING.MATH(A1,0.1), FLOOR.MATH(A1,0.1)) - 0.01
或者拆分逻辑的完整写法:
=IF(INT(MOD(A1*100,10))>=5, CEILING.MATH(A1,0.1)-0.01, FLOOR.MATH(A1,0.1)-0.01)
公式逻辑说明
判断条件:
INT(MOD(A1*100,10))>=5A1*100:将原始数值放大100倍,把小数点后第二位转为个位(如$3.945*100=394.5,$3.955*100=395.5)MOD(...,10):提取放大后的数值的个位部分(即原始数值的小数点后第二位及后续小数,如MOD(394.5,10)=4.5,MOD(395.5,10)=5.5)INT(...):取整数部分,得到原始数值小数点后第二位的数字(如INT(4.5)=4,INT(5.5)=5)- 最终判断该数字是否≥5,以此区分
x.x5x及以上和x.x4x及以下的情况
分支处理
- 当满足条件(小数点后第二位≥5):用
CEILING.MATH(A1,0.1)将数值向上取整到最近的0.1倍数,再减去0.01得到以.90结尾的价格(如$3.955→4.0-0.01=3.99) - 当不满足条件(小数点后第二位≤4):用
FLOOR.MATH(A1,0.1)将数值向下取整到最近的0.1倍数,再减去0.01得到以.90结尾的价格(如$3.945→3.9-0.01=3.89)
- 当满足条件(小数点后第二位≥5):用
测试验证
以下是不同场景的测试结果,均符合需求:
- 输入
$3.945→ 输出$3.890 - 输入
$3.955→ 输出$3.990 - 输入
$123.449→ 输出$123.390 - 输入
$78.950→ 输出$78.990 - 输入
$0.543→ 输出$0.490 - 输入
$999.959→ 输出$999.990
内容的提问来源于stack exchange,提问作者Francisco Augusto Varela Aguir
相关产品推荐
相关产品推荐

