ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8988|回复: 5

[求助] 求教:如何用Excel计算利息积数?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-1-12 19:03 | 显示全部楼层 |阅读模式
想用Excel实现存款或贷款利息积数的计算,但真是无从下手,不知哪位能帮帮忙。
以存款为例:开户日期和开户金额已定,存款或取款若干次后,计算到计息日为止的利息积数。也可以表达为:有a(开户日)、b(开户金额)、c(计息日)三个数值和A(存取款日期)、B(存取款金额)两个数列,其中A、B数列是个数不定但个数相等的数列。计算公式是(A1-a)*b、(A2-A1)*(b-B1)、(A3-A2)*((b-B1)-B2)、(A4-A3)*(((b-B1)-B2)-B3)……(An-A(n-1))*(b-B1-B2-B3-……B(n-1)),直到A数列为空,最后(c-An)*(b-B1-B2-B3-……B(n-1)-Bn)。然后将这些结果求和。

TA的精华主题

TA的得分主题

发表于 2003-1-15 23:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gzsavage.accxp.com
上面有我的一个计算内部银行存款利息的EXCEL东东
你参考下吧
不过实现方法有点复杂化了,这只是我修改一个朋友德程序,因为懒本来应该重新编个的
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2011-3-29 22:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

发表于 2023-3-7 19:21 | 显示全部楼层
gzsavage 发表于 2003-1-15 23:30
gzsavage.accxp.com
上面有我的一个计算内部银行存款利息的EXCEL东东
你参考下吧

在哪里找那

TA的精华主题

TA的得分主题

发表于 2023-3-8 06:45 | 显示全部楼层
有一个excel账套有计算利息功能,收费的,模板不能上传,截个图上来。
31F8UCH`9S3]Q6_TO{SMX{D.png

TA的精华主题

TA的得分主题

发表于 2023-3-8 08:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
利息单没有用函数,上传vba代码:
Private Sub CommandButton1_Click()
    If TextBox1.Value <> "" And TextBox1.Value <> 0 And ComboBox7.Value <> "" Then
        T1 = ComboBox1 & "-" & ComboBox2 & "-" & ComboBox3
        T2 = ComboBox4 & "-" & ComboBox5 & "-" & ComboBox6
        If Evaluate("ISERROR(MONTH(""" & T1 & """))") Then
            MsgBox "起息日期填写错误!", vbExclamation, "酷e提示:"
        Else
            If Evaluate("ISERROR(MONTH(""" & T2 & """))") Then
                MsgBox "截止日期填写错误!", vbExclamation, "酷e提示:"
            Else
                Range("BG4") = T1
                Range("BG5") = T2
                PT1 = Evaluate("DATEVALUE(""" & T1 & """)")
                PT2 = Evaluate("DATEVALUE(""" & T2 & """)")
                PT3 = Evaluate("DATEVALUE(""" & Range("Q6") & """)")
                PT4 = Evaluate("DATEVALUE(""" & Range("Q" & Range("BK1") & "") & """)")
                If PT1 < PT3 Then
                    MsgBox "起息日期不能早于建账日:" & Label9, 64, "酷e提示:"
                ElseIf PT1 > PT4 Then
                    MsgBox "起息日期不能晚于当前账期:" & Label10, 64, "酷e提示:"
                ElseIf PT2 < PT1 Then
                    MsgBox "截止日期不能早于起息日!", 64, "酷e提示:"
                ElseIf PT2 > PT4 Then
                    If Range("W" & Range("BK1") & "").Value = 0 Then
                        MsgBox "本账期末无余额,后期无需计息,请将截止日设到账期最后一天!", 64, "酷e提示:"
                    Else
                        If PT2 > Evaluate("DATEVALUE(""" & Sheets("凭证").Range("G2") & """)") Then
                            ASD1 = MsgBox("截止日期超出当前账期! 确定预计利息吗?", 65, "酷e提示:")
                            If ASD1 = 1 Then
                                TT1 = 1
                            End If
                        Else
                            TT1 = 1
                        End If
                    End If
                Else
                    TT1 = 1
                End If
            End If
            If TT1 = 1 Then
                If TextBox4.Value <> "" And TextBox4.Value > 0 And ComboBox7.Value = "全部余额" Then
                    MsgBox "预设了无息天数,取数不能再选""全部余额"",请重新设置!", 64, "酷e提示:"
                Else
                    Dim k As Long
                    For k = 6 To Range("BK1").Value
                        T0 = Range("Q" & k & "").Value
                        PT0 = Evaluate("DATEVALUE(""" & T0 & """)")
                        If PT0 > PT1 Then
                            TT = Range("W" & k - 1 & "").Value
                            If ComboBox7.Value = "应收余额" And TT < 0 Then
                                TT = 0
                            ElseIf ComboBox7.Value = "应付余额" And TT > 0 Then
                                TT = 0
                            End If
                            If PT0 <= PT2 Then
                                T01 = Range("Q" & k - 1 & "").Value
                                If T4 = "" Then
                                    T4 = TT
                                    T3 = PT0 - PT1
                                Else
                                    T3 = PT0 - Evaluate("DATEVALUE(""" & T01 & """)")
                                End If
                                T4 = T4 + TT * T3
                                If PT0 = PT2 Then
                                    Exit For
                                End If
                            Else
                                T02 = Range("Q" & k - 1 & "").Value
                                T10 = PT2 - Evaluate("DATEVALUE(""" & T02 & """)")
                                T11 = PT2 - PT1 + 1
                                T12 = Evaluate("MIN(" & T10 & "," & T11 & ")")
                                T4 = T4 + TT * T12
                                Exit For
                            End If
                        ElseIf PT0 = PT1 Then
                            If T4 = "" Then
                                If PT0 = PT3 Then
                                    T4 = Range("W" & k & "").Value
                                Else
                                    T4 = Range("W" & k - 1 & "").Value
                                End If
                                If ComboBox7.Value = "应收余额" And T4 < 0 Then
                                    T4 = 0
                                ElseIf ComboBox7.Value = "应付余额" And T4 > 0 Then
                                    T4 = 0
                                End If
                            End If
                        End If
                    Next k
                    If PT2 > PT4 Then
                        TT1 = Range("W" & Range("BK1") & "").Value
                        If ComboBox7.Value = "应收余额" And TT1 < 0 Then
                            TT1 = 0
                        ElseIf ComboBox7.Value = "应付余额" And TT1 > 0 Then
                            TT1 = 0
                        End If
                        T13 = PT2 - PT4
                        T4 = T4 + TT1 * T13
                    End If
                    If TextBox4.Value <> "" And TextBox4.Value > 0 Then
                        kk = Evaluate("MIN(" & k & "," & Range("BK1") & ")") + 1
                        Dim k1 As Long
                        For k1 = 1 To kk - 7
                            T01 = Range("Q" & kk - k1 & "").Value
                            PT01 = Evaluate("DATEVALUE(""" & T01 & """)")
                            If PT01 < PT2 Then
                                If PT01 >= PT1 And PT2 - PT01 - TextBox4.Value > 0 Then
                                    If ComboBox7.Value = "应收余额" Then
                                        T5 = T5 + Range("U" & kk - k1 & "")
                                    ElseIf ComboBox7.Value = "应付余额" Then
                                        T5 = T5 - Range("V" & kk - k1 & "")
                                    End If
                                Else
                                    If PT01 < PT1 Then
                                        PT02 = Evaluate("MIN(" & PT2 - PT1 + 1 & "," & TextBox4.Value - PT1 + PT01 + 1 & ")")
                                        If PT02 > 0 Then
                                            If ComboBox7.Value = "应收余额" Then
                                                T51 = T51 + Range("U" & kk - k1 & "") * PT02
                                            ElseIf ComboBox7.Value = "应付余额" Then
                                                T51 = T51 - Range("V" & kk - k1 & "") * PT02
                                            End If
                                        Else
                                            Exit For
                                        End If
                                    Else
                                        PT03 = Evaluate("MIN(" & PT2 - PT1 + 1 & "," & PT2 - PT01 & ")")
                                        If ComboBox7.Value = "应收余额" Then
                                            T52 = T52 + Range("U" & kk - k1 & "") * PT03
                                        ElseIf ComboBox7.Value = "应付余额" Then
                                            T52 = T52 - Range("V" & kk - k1 & "") * PT03
                                        End If
                                    End If
                                End If
                            End If
                        Next k1
                        T4 = T4 - T5 * TextBox4.Value - T51 - T52
                        T9 = Application.Round(T4 * TextBox1.Value / 100 / ComboBox8.Value, 2)
                        If ComboBox7.Value = "应收余额" And T4 < 0 Then
                            MsgBox "扣除" & TextBox4.Value & "天账期后计算结果为应付利息" & -T9 & "元,应收利息0元!", 64, "酷e提示:"
                            T4 = 0
                        ElseIf ComboBox7.Value = "应付余额" And T4 > 0 Then
                            MsgBox "扣除" & TextBox4.Value & "天账期后计算结果为应收利息" & T9 & "元,应付利息0元!", 64, "酷e提示:"
                            T4 = 0
                        End If
                    End If
                    TextBox3.Value = T4
                End If
            End If
        End If
    Else
        If ComboBox7.Value = "" Then
            MsgBox "请设置取数方法!", 64, "酷e提示:"
            UserForm9.ComboBox7.SetFocus
        Else
            MsgBox "请输入年化利率!", 64, "酷e提示:"
            UserForm9.TextBox1.SetFocus
        End If
    End If
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 19:53 , Processed in 0.034165 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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