【问题标题】:Excel VBA Subtotal (sum) giving half the value compared to actual sumExcel VBA小计(总和)与实际总和相比给出一半的值
【发布时间】:2021-05-21 12:41:14
【问题描述】:

这就是我的数据的样子。它实际上取决于 K 列。N 列和 O 列是我通过 VBA 创建的。数据有 50,000+ 行

我要做的是通过过滤器找到 E 列的唯一值,然后通过求和列 K 值来找到该值的总时间。

这是我的代码:

Sub Test()

    Application.ScreenUpdating = False
    
    Dim lRow As Long
    

    ActiveSheet.Range("E2:E655360").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("N2"), Unique:=True
    
    lRow = Cells(Rows.Count, 14).End(xlUp).Row
    
    For i = 2 To lRow
    
    ActiveSheet.ListObjects("Table3").Range.AutoFilter Field:=5, Criteria1:= _
        Cells(i, 14).Value

    ActiveSheet.ListObjects("Table3").Range.AutoFilter Field:=11, Criteria1:= _
        "<1:10:00"
        
    Cells(i, 15).Value = Application.WorksheetFunction.Subtotal(109, Range("$K$2:$K$100000"))
    
    ActiveSheet.Range("K2:K999999").SpecialCells(xlCellTypeVisible).Copy
    ActiveSheet.Cells(1, 27).PasteSpecial
    
    'ActiveSheet.ListObjects("Table3").Range.AutoFilter Field:=11
    'ActiveSheet.ListObjects("Table3").Range.AutoFilter Field:=5
      
    Next i

End Sub

一切正常,除了小计给我的值正好是实际总和的一半。我无法使用 SUM,因为它也在计算隐藏的过滤掉的行的总和。我通过 SUM 函数和状态栏总和值对此进行了测试。有趣的是,即使没有应用过滤器,它也给了我一半的价值

为了进行测试,我检查了状态栏总和值以及 SUM(K:K) 两者都给出了小计值的两倍值

一个简单的解决方法可能是将答案乘以 2,但我想了解实际问题,因为这种快速修复可能会在以后产生问题

K列的数字格式为[h]:mm:ss

这是用于快速参考的小计第一个参数语法:

另外,如果我能以某种方式使这段代码更高效,或者改变其他任何东西以使其正常工作,请告诉我。提前非常感谢

【问题讨论】:

  • 为什么你从不尝试 sumIfs 函数,它不能提供正确的结果?
  • 这听起来像是使用数据透视表的最佳时机。您可以将其设置为根据 E 列自动分组,然后将 K 列设置为值字段并选择 SUM。
  • 如果小计单元格包含在总和范围内,您可以获得您看到的效果......

标签: excel vba function


【解决方案1】:

在这种情况下,代码 109 将与函数的 9 相同: Application.WorksheetFunction.Subtotal

9 和 109 之间的区别仅在于您手动隐藏行时,而不是使用表格。

参考见: See the subtitle "Difference in first arguments"

可能的解决方案是创建一系列可见单元格并计算该范围的总和。见solution here

【讨论】:

  • 欢迎来到 SO!在您回复之前,请检查它是否是问题的答案。在这种情况下,您试图为问题提供解决方案,但您没有回答问题。已经有其他 cmets 给出了解决方案,但它们不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2022-01-05
  • 2010-12-08
相关资源
最近更新 更多