简体   繁体   English

只汇总可见的

[英]Sum only those that are visible

Recently, I have been trying to code a VBA to assist me in summing a column and divide by counter to get average. 最近,我一直在尝试对VBA进行编码,以帮助我累加一列并除以计数器以获得平均值。 However, I have a new requirement that is it is only going to sum up those that are visible. 但是,我有一个新的要求,那就是只总结那些可见的内容。 Any idea on how should I proceed? 关于如何进行的任何想法? Below is my code, 下面是我的代码,

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

This testcode works for me, just change it as you need it: 此测试代码对我有用,只需根据需要对其进行更改:

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