ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何求出带汉字数值总和?

如何求出带汉字数值总和?

作者:绿色风 分类: 时间:2022-08-17 浏览:252
楼主
悟空师弟
Q:求附件中A列共计多少元,怎么计算?(公司老总把数据记录成这样,数据量还比较大,要求总计,把我急晕了……)
A:数组公式(两个公式任选一个):
公式1:
  1. =SUM(--RIGHT(LEFT(A1:A12,LEN(A1:A12)-1),LEN(A1:A12)*2-LENB(A1:A12)))&"元"
公式2:
  1. =SUM(--RIGHT(SUBSTITUTE(A1:A12,"元",),LEN(A1:A12)*2-LENB(A1:A12)))&"元"
详见附件:
如何求出带汉字数值总和?.rar

效果如图:

 
2楼
xynczhangchun
你不是给出公式了吗
3楼
wise



急晕之中想出来的
4楼
xyh9999
哈哈,我怕老板那天会写英文进去,我还担心他哪天会把"元"给漏写了,我更担心他万一在一个单元格中记下了多个数字,所以我决定修改一下,以解决可能出现的这些情况(见附件):
Function Lqc_SumNumber(cSS) '
'编写:XYH9999
Dim RegEx As Object
    Set RegEx = CreateObject("VBscript.RegExp")
    With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = "\D*(\d+\.*\d*)\D*"
    End With
    nTemp = 0
    If IsObject(cSS) Then
       For Each ss1 In cSS
         cTT = ss1.Value
         Set cArr = RegEx.Execute(cTT)
         For Each cArrX In cArr
           nTemp = nTemp + Val(RegEx.Replace(cArrX.Value, "$1"))
         Next
       Next
    Else
         cTT = cSS
         Set cArr = RegEx.Execute(cTT)
         For Each cArrX In cArr
           nTemp = nTemp + Val(RegEx.Replace(cArrX.Value, "$1"))
         Next
    End If
    Set RegEx = Nothing
    Lqc_SumNumber = nTemp
End Function

如何求出带汉字数值总和?.rar
5楼
xyh9999
'你把以下内容用记事本写在Xy.vbs文件中,让老板直接双击该文件,对excel2003来说就没问题了,如果他用的其他excel版本请麻烦您参照了写一个,如果老板还不会的话你就在autoexec.bat文件中直接调用该Xy.vbs文件,让他一开机就自动让宏安全性调低!看他还烦不烦您老了?!

Dim WSH , oExcel
Set WSH = CreateObject("Wscript.Shell")
Set oExcel = CreateObject("Excel.Application")
regStr1 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & oExcel.Application.Version & "\Excel\Security\Level"
regStr2 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & oExcel.Application.Version & "\Excel\Security\AccessVBOM"
regStr3 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & oExcel.Application.Version & "\Excel\Security\DontTrustInstalledFiles"
ret=WSH.RegWrite(regStr1, "1", "REG_DWORD")'VBA安全级别值1-4分别对应:低,中,高,非常高
ret=WSH.RegWrite(regStr2, "1", "REG_DWORD")
ret=WSH.RegWrite(regStr3, "0", "REG_DWORD")
Set WSH = Nothing
6楼
xyh9999
哈哈,揭发你是抄袭! ....
开玩笑的,反正经常被人抄袭了,不在呼这个了. (哦,稍稍改了一点,请留心)
7楼
悟空师弟
学习了,从来没见过的解法,感谢!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap