2014-10-02 84 views
1

因此,我用当前的代码遇到了一个小问题。我的目标是过滤Excel表格中的数据,并获取过滤数据的平均值和标准偏差。在不过滤数据的情况下,我可以显示平均值和标准偏差。我得到了平均值和标准差的值。但是,在过滤数据之后,我再次运行宏,但它显示的数据未经过滤,与以前一样显示相同的平均值和标准偏差。我想知道我的代码有什么问题,或者如何调整它,以便只显示所显示的数据上的平均值和标准偏差。在Excel中显示,过滤数据的平均值和标准偏差使用VBA

这里是我的代码:

'守则平均

Sub Avg() 
Range("F1").Value = Application.WorksheetFunction.Average(Columns("D")) 
End Sub 

' 规范标准。 Dev_S

Sub Dev() 
Range("G1").Value = (Application.WorksheetFunction.StDev_S(Columns("D")))/1.128 
End Sub 

回答

2

使用小计功能。 101和107代码应该忽略隐藏的值。 http://office.microsoft.com/en-ca/excel-help/subtotal-function-HP010062463.aspx

Sub Avg() 
Range("F1").Value = Application.WorksheetFunction.SUBTOTAL(101,Columns("D")) 
End Sub 

Sub Dev() 
Range("G1").Value = (Application.WorksheetFunction.SUBTOTAL(107,Columns("D")))/1.128 
End Sub 

我现在不能测试它,让我知道如果这是可行的!

+0

完美的作品乔希!谢谢您的帮助!我还是VBA的新手,所以我仍然在学习上下文和一切。欣赏它! – adit123 2014-10-02 13:29:46

+0

等待@Josh DM,我尝试手动计算给定的数据,手动获取的值与代码中计算的值不同。 – adit123 2014-10-02 14:00:55

+0

这只发生在我不连续过滤类别时。为了实现这个目标,这些类别显然必须是连续的。 – adit123 2014-10-02 14:06:42