魔方网表 让信息化更简单

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

查看: 2808|回复: 1

关于字符串取数计算(讨论贴二)

[复制链接]
lnxxnchzyl 发表于 2009-10-19 09:46:45 | 显示全部楼层 |阅读模式
关于字符串取数计算(讨论贴二)

要求:用函数求解,不得添加辅助列

支出情况                                                                          小计
1月20日支出蔬菜计10.5元,肉计15.8元,鱼计12元。
1月21日支出油计70元,味精计15.5元,菜计28.5元
1月22日支出生抽计15元,1月23日料酒计5.5元,菜计31元。


本月共计支出
 楼主| lnxxnchzyl 发表于 2009-10-19 09:47:29 | 显示全部楼层
领导开新帖了,呵呵,我对公式不熟悉,只会用Sum,平时也不常用excel,哈哈

既然可以用函数,我就来个自定义函数吧,主要思路和你们说的一样,就是找 “计” 和“元”字,程序里面使用了递归


附件已经修改

result.rar

Public Function SumNum(R As String) As Double
    Dim Loc计 As Integer, Loc元 As Integer
    SumNum = 0
    R = Trim$(R)
    If R = "" Then Exit Function
    Loc计 = InStr(R, "计")
    Loc元 = InStr(R, "元")
    If Loc计 * Loc元 = 0 Then Exit Function
    If Loc计 < Loc元 Then        
        Dim C1 As String
        C1 = Trim$(Mid$(R, Loc计 + 1, Loc元 - Loc计 - 1))
        If IsNumber(C1) Then SumNum = C1
    End If
    If Loc元 < Len(R) Then SumNum = SumNum + SumNum(Right$(R, Len(R) - Loc元))
End Function
Private Function IsNumber(C As String) As Boolean
    Const CharSet = "+-.,0123456789eE"
    Dim i As Integer
    IsNumber = False
    If C = "" Or Not IsNumeric(C) Then Exit Function
    For i = 1 To Len(C)
        If InStr(CharSet, Mid$(C, i, 1)) = 0 Then Exit Function
    Next i
    IsNumber = True
End Function
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2025-2-22 16:59 , Processed in 0.059803 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表