Office中国论坛/Access中国论坛

标题: 出一个帐龄分析的题目,有兴趣的进来做做 [打印本页]

作者: bonesoup    时间: 2008-6-1 02:12
标题: 出一个帐龄分析的题目,有兴趣的进来做做
同事让帮做的。
做完后觉得有点意思,所以跟大家分享一下解题的快乐。
作者: ui    时间: 2008-6-1 10:26
瞧一瞧!!
作者: bonesoup    时间: 2008-6-1 13:57
怎么设置隐藏,回复后可见。
我想把我的答案先隐藏。
等有兴趣的朋友解出来后,再看看和我的思路有什么不同。
作者: 欢欢    时间: 2008-6-1 20:20
小爪--字母求和.rar
欢乐小爪(461699029) 11:02:09
http://www.officestudy.cn/ShowPo ... ThreadID=2227#12114
我得了50个金币,哈哈!!![:50] [:50] [:50]




看半天,没有看懂楼住题目得意思!汗

[ 本帖最后由 欢欢 于 2008-6-1 20:31 编辑 ]
作者: bonesoup    时间: 2008-6-3 21:27
版主MM。我这同事描述得还比较清楚吧。比起你的那些CAD问题要易懂得多吧。
什么金币?
告诉我怎么搞那个隐藏。
作者: bonesoup    时间: 2008-6-7 19:14
直接贴我的答案算了。

Function cqje(ByVal zcqje As Double, ByVal xyqx As Integer, ByRef zlqj As Range, ByRef zlje As Range, ByRef cqqj As Range) As Double
'自定义函数目的:求超期金额
'说明:
'参数一:zcqje 总超期金额
'参数二:xyqx 信用期限
'参数三:zlqj 帐龄期间
'参数四:zlje 帐龄金额
'参数五:cqqj 超期期间
Dim r As Range
Dim i As Integer
Dim myarray1, myarray2
Dim d, mykey
Dim isplit As Integer
Dim je As Double
Set d = CreateObject("scripting.dictionary")
isplit = -1
'获得超期期间与金额
For i = 1 To zlqj.Cells.Count
'如果帐龄金额不为0
    If zlje.Cells(i) <> 0 Then
    '如果帐龄期间标志为-
        If bzh(zlqj.Cells(i)) = True Then
            myarray1 = Split(zlqj.Cells(i), "-")
            '如果信用期限小于等于帐龄期间的右值
            If xyqx <= CInt(myarray1(1)) Then
                d.Add CInt(myarray1(1)) - xyqx, zlje.Cells(i)
                '记录待分割地点
                If isplit = -1 Then
                    isplit = CInt(myarray1(1)) - xyqx
                End If
            End If
        Else
            myarray1 = Split(zlqj.Cells(i), ">")
            d.Add CInt(myarray1(1)) + 1, zlje.Cells(i)
            
        End If
    End If
Next
'如果isplit的初值被改变,则重赋分割地点的值
If isplit <> -1 Then
    d.Item(isplit) = zcqje - (Evaluate(Join(d.items, "+")) - d.Item(isplit))
End If
If bzh(cqqj.Value) = True Then
    myarray2 = Split(cqqj.Value, "-")
    For Each mykey In d.Keys
        If mykey > CInt(myarray2(0)) And mykey <= CInt(myarray2(1)) Then
            je = je + d.Item(mykey)
        End If
    Next
Else
    myarray2 = Split(cqqj.Value, ">")
    For Each mykey In d.Keys
        If mykey > CInt(myarray2(1)) Then
            je = je + d.Item(mykey)
        End If
    Next
End If

cqje = je
End Function

Function bzh(str As String) As Boolean
'判断不同的期间标志,即含-或>
bzh = Len(str) > Len(Replace(str, "-", ""))
End Function
作者: jjqlucky    时间: 2008-6-14 16:02
看一下!
作者: 刘志文    时间: 2008-12-15 16:15
学习一下!![:50] [:50]




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3