Skip to main content

工具函数

列统计

=SUMIFS($B$1:$B$100, $A$1:$A$100, A1)

随机数据生成

# 生成I3正负30%的数据
=I3 * (1 + RAND() * 0.6 - 0.3)
# C2 基础数据
# $F$2 误差范围(绝对值)
# $G$2 计算误差
=((RAND()*$F$2+1)*(-1)^INT(RAND()*2)*$G$2)+C2

数字转大写

连贯的转换,包含十位,各位等

替换L4元素即可

="人民币  " & IF(L4=0,"零元",IF(L4<0,TEXT(INT(ABS(L4)),"负[DBNum2]g/通用格式")&"元"&IF((INT(L4*10)-INT(L4)*10)=0,"",TEXT(INT(L4*10)-INT(L4)*10,"[DBNum2]")&"角")&IF((INT(L4*100)-INT(L4*10)*10)=0,"整",TEXT(INT(L4*10)-INT(L4*10),"[DBNum2]")&TEXT(INT(L4*100)-INT(L4*10)*10,"[DBNum2]")&"分"),TEXT(INT(L4),"[dbnum2]")&"元"&IF(INT(L4*10)-INT(L4)*10=0,"",TEXT(INT(L4*10)-INT(L4)*10,"[dbnum2]")&"角")&IF((INT(L4*100)-INT(L4*10)*10)=0,"整",TEXT(INT(L4*10)-INT(L4*10),"[DBNum2]")&TEXT(INT(L4*100)-INT(L4*10)*10,"[DBNum2]")&"分")))

核心转换

提取各位数值:

  • 千位数值:=INT(MOD(A1,10000)/1000)
  • 万位数值:=INT(MOD(A1,100000)/10000)
  • 分位数值:=INT(MOD(A1*10,10))
  • 角位数值:=INT(MOD(A1*10,10))
  • 十万位数值:=INT(MOD(A1,1000000)/100000)
  • 百万位数值:=INT(MOD(A1,10000000)/1000000)
  • 千万位数值:=INT(MOD(A1,100000000)/10000000)

这些公式将提取相应的位数数字,如果位数不存在,则返回0。

将数字转换为中文大写:

使用 TEXT 函数将提取的数字转换为中文大写格式。假设上述提取的数字分别放在B1到H1单元格中,你可以在相邻的单元格中使用以下公式将其转换为中文大写格式:

# 失败就返回 零
=IF(B1<>0, TEXT(B1, "[$-0804][DBNum2][$-804]0"), "零")

# 将以下X4 替换需要对应的金额值即可

#分位数值
=TEXT(IF(X4>=1, INT(MOD(X4*100, 10)), ""),"[DBNum2]")
#角位数值
=TEXT(IF(X4>=1, INT(MOD(X4*10, 10)), ""),"[DBNum2]")
# 个位
=TEXT(IF(X4>100,INT(MOD(X4,10)/1),0),"[DBNum2]")
# 十位
=TEXT(IF(X4>100,INT(MOD(X4,100)/10),0),"[DBNum2]")
#千位数值
=TEXT(IF(X4>100,INT(MOD(X4,10000)/1000),0),"[DBNum2]")
#万位数值
=TEXT(IF(X4>100,INT(MOD(X4,100000)/10000),0),"[DBNum2]")

#十万位数值
=TEXT(IF(X4>100,INT(MOD(X4,1000000)/100000),0),"[DBNum2]")
#百万位数值
=TEXT(IF(X4>100,INT(MOD(X4,10000000)/10000000),0),"[DBNum2]")
#千万位数值
=TEXT(IF(X4>100,INT(MOD(X4,100000000)/100000000),0),"[DBNum2]")

这个公式中的格式字符串 "[$-0804][DBNum2][$-804]0" 是用来将数字转换为中文大写的格式。