喻同学看不懂得公式解析

涉及函数得认识

IF函数

详细说明:Microsift 365关于if函数得介绍

if得公式意义:

  1. =if(表达式,真值,假值)
  2. 命名
  3. 逻辑值得数学概念:百度百科:逻辑值

ABS函数

详细说明:Microsift 365关于ABS函数得介绍

绝对值函数得意义:

  1. 绝对值函数,返回任何数据得绝对值
  2. 函数得命名:绝对值(absolute value),取首三字母命名为ABS函数
  3. 绝对值得数学概念:百度百科:绝对值

INT函数

详细说明:Microsift 365关于INT函数得介绍

整型函数得意义

  1. 整型函数,取整数部分得函数
  2. 函数得命名:取自编程语言中得整型概念(INTERGER),取首三字母命名INT函数。
  3. 整型得数学概念:百度百科:整型数据image

!
需要注意它跟四舍五入取整得函数round得区别,int只取整数部分。也就是小数部分是0.9他也不会取成1(例如:=INT(8.9) 返回值是8)

ROUND函数

详细说明:Microsift 365关于ROUND函数得介绍

四舍五入函数得意义

  1. =round(小数,四舍五入得位数)
  2. 函数得命名:取自round得英文含义,作为动词使用时,它具有四舍五入得含义。
    image
  3. 四舍五入得数学概念:百度百科:四舍五入

TEXT函数

详细说明:Microsift 365关于TEXT函数得介绍

TEXT函数的意义:

  1. =text(待转换的文本,转换格式)
  2. 函数的命名:取自TEXT英文含义,文本
  3. 文本值得数学概念:在计算机科学中,用来存储数字和文本得概念是不同得,主要是1存储文本一个文本需要2个字节,而存储数值需要更大得内存空间。所以文本值和数值对于计算机来说,它是两个东西。就像1和"1"得区别。(带没带双引号)

通用格式符号

excel本身没有格式符号得说法,这个操作主要应用在text函数用于展示表格文本使用,即(format_text 格式文本),可以将文本依照自己喜欢得格式进行变化。
image

除了常见得文本格式外。还有一些中文习惯特有得格式
image

在实际测试中,该函数存在一些bug,比如小数点后,如果是0,还是会出现0角、0分这种状况。所以需要公式优化。

参考与引用:
知乎:总结篇-TEXT函数使用终极帖

文本连接符号 ”&“

文本链接符号,跟+得区别就是不能用于计算,且&两边必须是字符串。
例如:1&3会报错,因为在excel中1,3这种表现形式会被识别成整型数值,所以会导致1+3会返回4,而正确得做法是"1"&"3",用双引号或者单引号标记它们是字符,然后就会组合成"13"。

作用类似concat和textjoin函数,但是函数更为灵活通用

文本连接符得意义:

  1. 将两个或更多个单元格的文本合并到一个单元格
    image

数学运算符号

加减乘除就不介绍了

公式解析

测试:AI解析

image

实际公式得目的

该公式得主要目的还是实现一些大小写转换。

因为text函数函数得问题,所以需要将数据堪称几个部分来处理

  1. 符号部分,整数还是负数
  2. 整数部分,为零还是不为0
  3. 小数部分,小数部分又分为 角 得处理,和 分 得处理。

image

=IF(ABS(D11)<0.005,"",IF(D11<0,"负",) #1. 这里第一步就是确认符号位,显示判断是否小于0.005,因为小于0.005就会被四舍五入等于0,之后判断是否小于0,小于则是负数,这里就会有两种结果,空 和 “负”
&IF(INT(ABS(D11)),TEXT(INT(ABS(D11)),"[dbnum2]")&"元",) #2. 这里第二部就是确认整数部分,甚至我觉得if有点多余,因为没有if,直接TEXT(INT(ABS(D11)),"[dbnum2]")&"元"也行
&IF(INT(ABS(D11)*10)-INT(ABS(D11))*10,TEXT(INT(ABS(D11)*10)-INT(ABS(D11))*10,"[dbnum2]")&"角",IF(INT(ABS(D11))=ABS(D11),,IF(ABS(D11)<0.1,,"零")))#3. 这里第三步部分其实就是确定角分位得,他得处理方式很有意思
&IF(ROUND(ABS(D11)*100-INT(ABS(D11)*10)*10,),TEXT(ROUND(ABS(D11)*100-INT(ABS(D11)*10)*10,),"[dbnum2]")&"分","整")) #4. 这里同上面得处理方式,用100取进两位获取到分位得值

第三步处理方式详细解答:

  1. 运用进制得思维去实现角分位得处理,首先取D11*10,
  2. 让小数点往后飘了一位,也就取到了角位,操作为ABS(D11)*10,但是问题是,这个操作提取到了所有角分位上得整型,那原本整数部分得数还在。
  3. 所以公式很聪明得选择再利用进制提取个位以上得所有数,
  4. 即先提取整型int(ABS(D11)),然后用整型取进位获得INT10,即INT(ABS(D11))10
  5. 这样就获得两个可以相减得到角分位。INT(ABS(D11)10)-INT(ABS(D11))10
  6. 当然这里公式还处理了一个文本格式得bug,也就是零得输出问题,也就是为了避免出现 零角 这种大写问题,这里用,IF(ABS(D11)<0.1,,"零")来人为控制

我们假设一个数为100.19

步骤 答案 解析
1 1001.9 ABS(100.19*10)
2 1001 INT(ABS(100.19*10))
3 100 INT(100.19)
4 1000 INT(100.19)*10
5 1 INT(ABS(100.1910))-INT(100.19)10

常用网站

Microsoft函数帮助

posted @ 2023-11-27 11:21  SheZQ  阅读(11)  评论(0编辑  收藏  举报