excel 2010 vba循环数据透视表

时间:2016-02-04 15:16:16

标签: vba excel-vba loops pivot-table excel

当用户按下按钮时,我需要更新16个数据透视表。需要运行的代码如下:

ActiveSheet.PivotTables("PivotTable10").PivotFields("count").ClearAllFilters
        ActiveSheet.PivotTables("PivotTable10").PivotFields("scrap code").ClearAllFilters
               ActiveSheet.PivotTables("PivotTable10").PivotFields("count").ShowAllItems = True

        With ActiveSheet.PivotTables("PivotTable10").PivotFields("count")
            .PivotItems("0").Visible = False
        End With

数据透视表的名称是: MSP,MSP30,FSP,FSP30,MRP,MRP30,FRP,FRP30,MPP,MPP30,FPP,FPP30,MCP,MCP30,FCP,FCP30

我希望将PivotTable10替换为循环到该数据透视表列表的变量。现在我的代码是上面代码的16个块。我对循环知之甚少,而且我在谷歌搜索中找不到这种类型循环的好例子。

编辑:最后代码有效,下面的两个答案都完美无缺,这段代码只是工作得更快

Sub IteratePivots()

Application.ScreenUpdating = False

On Error Resume Next

Worksheets("Analytics Admin").Activate

Dim pvtTables As PivotTables
Dim pvtTable As PivotTable
Set pvtTables = Application.ActiveSheet.PivotTables
For Each pvtTable In pvtTables
    pvtTable.PivotFields("count").ClearAllFilters
    pvtTable.PivotFields("scrap code").ClearAllFilters
    pvtTable.PivotFields("count").ShowAllItems = True

    With pvtTable.PivotFields("count")
        .PivotItems("0").Visible = False
    End With
Next

Application.ScreenUpdating = False
End Sub

2 个答案:

答案 0 :(得分:3)

试试这段代码。此代码将遍历工作表中的所有可转动。

Sub IteratePivots()
Dim pvtTables As PivotTables
Dim pvtTable As PivotTable
Set pvtTables = Application.ActiveSheet.PivotTables
For Each pvtTable In pvtTables
    pvtTable.PivotFields("count").ClearAllFilters
    pvtTable.PivotFields("scrap code").ClearAllFilters
    pvtTable.PivotFields("count").ShowAllItems = True

    With pvtTable.PivotFields("count")
        .PivotItems("0").Visible = False
    End With
Next
End Sub

答案 1 :(得分:2)

这有点像黑客攻击,但这样的事情可能就是这个伎俩:

$.ajax({
    url: 'jsonTable.php',
    type: 'GET',
    dataType : 'json',
    /*data: {
        json: jsonData
    },*/
    success: function (response) {
        alert(response);
        console.log(response);
        var trHTML = '';
        $.each(response.livres, function (item) {
            trHTML += '<tr><td>' + item.titre + '</td><td>' + item.auteur + '</td><td>' + item.annee + '</td></tr>';
        });
        $('#records_table').append(trHTML);
    }
});

你可能会注意到我的笨拙检查,看看这个名字是否在数组中......这是一个更好的解决方案:

https://stackoverflow.com/a/10952705/190829