如何使用循环简化我的代码

用户名

我想获取一组数据的小计(平均值,最小值,最大值...)。我已经使用下面的代码实现了目标。如何使用循环简化它?非常感谢!

Sub AddSubs()
    Worksheets("Summary (3)").Activate
    'http://msdn.microsoft.com/en-us/library/office/ff838166(v=office.15).aspx
    Selection.Subtotal GroupBy:=14, Function:=xlAverage, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Worksheets("Summary (3)").Activate
    Selection.Subtotal GroupBy:=14, Function:=xlStDev, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Worksheets("Summary (3)").Activate
    Selection.Subtotal GroupBy:=14, Function:=xlMin, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Worksheets("Summary (3)").Activate
    Selection.Subtotal GroupBy:=14, Function:=xlMax, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Worksheets("Summary (3)").Activate
    Selection.Subtotal GroupBy:=14, Function:=xlCount, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
End Sub
用户名

进一步我的评论。这是简化代码的一种方法

Sub AddSubs()
    Worksheets("Summary (3)").Activate

    Dim constList As Collection
    Set constList = New Collection

    constList.Add (xlAverage)
    constList.Add (xlStDev)
    constList.Add (xlMin)
    constList.Add (xlMax)
    constList.Add (xlCount)

    Dim cnst
    For Each cnst In constList
        Selection.Subtotal GroupBy:=14, Function:=cnst, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Next

End Sub

甚至更简单(每个@simocos提示)

Sub Main()

    Dim cnst
    For Each cnst In Array(xlAverage, xlStDev, xlMin, xlMax, xlCount)
        Selection.Subtotal GroupBy:=14, Function:=cnst, SummaryBelowData:=False, Replace:=False, PageBreaks:=True, TotalList:=Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
    Next

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用循环简化我的代码

来自分类Dev

如何使用循环简化此代码

来自分类Dev

如何使用for循环来简化代码?

来自分类Dev

我如何简化循环

来自分类Dev

如何简化我的代码?

来自分类Dev

使用循环功能简化代码

来自分类Dev

使用for循环来简化代码

来自分类Dev

如何使用LINQ简化代码

来自分类Dev

JavaScript。尝试简化代码,也许使用循环?

来自分类Dev

使用DO循环简化重复的代码

来自分类Dev

我如何简化这个div循环

来自分类Dev

Javascript:我将如何简化此代码?

来自分类Dev

如何让我的代码循环?

来自分类Dev

如何使用for循环简化JavaScript函数?

来自分类Dev

如何使用ReactiveCocoa简化嵌套的for循环?

来自分类Dev

PHP如何使用数组来简化代码

来自分类Dev

如何使用 IF 条件简化 C# 代码

来自分类Dev

简化我的代码

来自分类Dev

在尝试用html canvas和javascript绘制塞舌尔标志后,尝试使用数组或循环来简化我的代码

来自分类Dev

如何在for循环中定义和设置TextView以简化代码?

来自分类Dev

如何简化这些循环?

来自分类Dev

如何优化我的代码,以便不使用循环

来自分类Dev

Python:如何使用for循环执行我的代码5次?

来自分类Dev

如何停止我的代码使用scanf生成无限循环?

来自分类Dev

如何在我的 Python 代码中使用 while 循环

来自分类Dev

如何使用for循环在r中向量化我的代码?

来自分类Dev

如何简化代码?

来自分类Dev

如何简化wxpython代码?

来自分类Dev

如何简化代码