簡體   English   中英

只匯總可見的

[英]Sum only those that are visible

最近,我一直在嘗試對VBA進行編碼,以幫助我累加一列並除以計數器以獲得平均值。 但是,我有一個新的要求,那就是只總結那些可見的內容。 關於如何進行的任何想法? 下面是我的代碼,

Sub test3()
    Dim FinalRow As Long
    Dim Row As Long
    Dim counter As Integer
    Dim total As Double
    counter = 3
    total = 0
    Dim i As Double
    FinalRow = Range("C65536").End(xlUp).Row
        For Row = 3 To FinalRow
            If Not IsEmpty(ActiveSheet.Cells(counter, "C")) And Not IsEmpty(ActiveSheet.Cells(Row + 1, "C")) Then
                If ActiveSheet.Cells(counter, "B").Value = True Then
                    ActiveSheet.Cells(Row, "M").Value = 100
                    For i = counter To Row
                    If IsEmpty(ActiveSheet.Cells(i, "F")) Then
                            With ActiveSheet.Cells(i, "F")
                                .Value = Now
                                .NumberFormat = "dd/mm/yy"
                                If (.Value - .Offset(0, 2).Value) >= 0 Then
                            .Font.color = vbRed
                        Else
                            .Font.color = vbBlack
                        End If
                         End With
                         End If
                         Next i
                         End If
                    If (ActiveSheet.Cells(Row, "L").Value = 100) Then
                          For i = counter To Row
                    If IsEmpty(ActiveSheet.Cells(i, "F")) Then
                                With ActiveSheet.Cells(i, "F")
                                .Value = Now
                                .NumberFormat = "dd/mm/yy"
                                If (.Value - .Offset(0, 2).Value) >= 0 Then
                            .Font.color = vbRed
                        Else
                            .Font.color = vbBlack
                        End If
                         End With
                    End If
                    Next i
                End If
                If Not (ActiveSheet.Cells(counter, "B").Value) = True Then
                    ActiveSheet.Cells(counter, "M").Value = (Application.Sum(Range(ActiveSheet.Cells(counter, "L"), ActiveSheet.Cells(Row, "L")))) / (Row + 1 - counter)

                End If
                counter = Row + 1
             End If
        Next
End Sub

此測試代碼對我有用,只需根據需要對其進行更改:

Sub TestSumme()
Dim Summe As Long
Summe = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets(1).Range("A1:A6").SpecialCells(xlCellTypeVisible))
MsgBox (Summe)
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM