当前位置:首页Excel教程 > 正文

G列是学费,H列是已收款,I列是余款,请在学费和已收款输入完后自动在I的单元格显示出余款,余款=学费-已收款

作者:野牛程序员:2023-11-07 12:00:50Excel教程阅读 3789

G列是学费,H列是已收款,I列是余款,请在学费和已收款输入完后自动在I的单元格显示出余款,余款=学费-已收款

要使用VBA在Excel中实现学费、已收款和余款的自动计算,您可以按照以下步骤进行操作:

  1. 在Excel中,按下Alt + F11 打开VBA编辑器。

  2. 在VBA编辑器中,双击您要在其上实现此功能的工作表。

  3. 在工作表的代码窗口中,输入以下VBA代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim FeeColumn As Integer ' 学费列的列号
    Dim PaidColumn As Integer ' 已收款列的列号
    Dim BalanceColumn As Integer ' 余款列的列号
    Dim LastRow As Long
    
    FeeColumn = 7 ' 假设学费在G列
    PaidColumn = 8 ' 假设已收款在H列
    BalanceColumn = 9 ' 假设余款在I列
    
    If Not Intersect(Target, Me.Range(Me.Cells(2, PaidColumn), Me.Cells(Me.Rows.Count, PaidColumn))) Is Nothing Then
        Application.EnableEvents = False
        LastRow = Me.Cells(Me.Rows.Count, PaidColumn).End(xlUp).Row
        For i = 2 To LastRow
            If IsNumeric(Me.Cells(i, FeeColumn).Value) And IsNumeric(Me.Cells(i, PaidColumn).Value) Then
                Me.Cells(i, BalanceColumn).Value = Me.Cells(i, FeeColumn).Value - Me.Cells(i, PaidColumn).Value
            Else
                Me.Cells(i, BalanceColumn).Value = ""
            End If
        Next i
        Application.EnableEvents = True
    End If
End Sub

代码会在已收款列(例如H列)的单元格发生变化时触发,然后计算余额。如果已收款为空或包含非数字字符,余额将保持为空白。这样,无论何时已收款发生变化,余额都会相应地变化,同时不影响其他列的计算。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击