Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA小计(总和),给出与实际总和相比的一半值_Excel_Vba_Function - Fatal编程技术网

Excel VBA小计(总和),给出与实际总和相比的一半值

Excel VBA小计(总和),给出与实际总和相比的一半值,excel,vba,function,Excel,Vba,Function,这就是我的数据的样子。它实际上是由K列决定的。N列和O列是我通过VBA创建的。数据有50000多行 我要做的是通过过滤器查找列E的唯一值,然后通过对列K值求和来查找该值的总时间 这是我的相同代码: Sub Test() Application.ScreenUpdating = False Dim lRow As Long ActiveSheet.Range("E2:E655360").AdvancedFilter Action

这就是我的数据的样子。它实际上是由K列决定的。N列和O列是我通过VBA创建的。数据有50000多行

我要做的是通过过滤器查找列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
子测试()
Application.ScreenUpdating=False
暗淡的光线和长的一样
ActiveSheet.Range(“E2:E655360”).AdvancedFilterAction:=xlFilterCopy,CopyToRange:=ActiveSheet.Range(“N2”),Unique:=True
lRow=单元格(Rows.Count,14)。结束(xlUp)。行
对于i=2至lRow
ActiveSheet.ListObjects(“Table3”).Range.AutoFilter字段:=5,标准1=_
单元格(i,14)。数值
ActiveSheet.ListObjects(“Table3”).Range.AutoFilter字段=11,准则1=_

“在这种情况下,功能代码109与9相同: Application.WorksheetFunction.Subtotal

9和109之间的差异只有在手动隐藏行时才会出现,而不是在表中

有关参考资料,请参阅:


可能的解决方案是创建一个可见单元格区域并计算该区域的总和。请参见

为什么您从不尝试sumIfs函数,它不能提供正确的结果?这听起来是使用透视表的最佳时机。您可以将其设置为基于列E自动分组,然后将列K设置为值字段并选择sum。您可以选择c如果小计单元格包含在总和范围内,您将看到这样的效果…欢迎这样做!在您做出答复之前,请检查它是否是问题的答案。在这种情况下,您试图给出问题的解决方案,但您没有回答问题。已经有其他注释给出了解决方案,但它们不是答案。