代码之家  ›  专栏  ›  技术社区  ›  artemis Roberto

Excel VBA数据透视表更改单元格颜色

  •  0
  • artemis Roberto  · 技术社区  · 6 年前

    我希望有人能帮助我找出Excel中pivot表的一个非常恼人的美学特性。

    以下是我当前的“分析”屏幕没有透视表时的样子: enter image description here 不过,我已经把数据透视表放在黑框中,并有一个宏在导入更多数据后自动更新它们。具体如下:

    Sub UpdatePivots()
        ' This sub is intended to update all pivot charts in the by switching to the appropriate
        ' worksheet, locating the appropriate pivot table, and updating them.
    
        Dim ws As Worksheet
        Dim PT As PivotTable
        Dim pvtItem As PivotItem
    
        For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook
            For Each PT In ws.PivotTables        '<~~ Loop all pivot tables in worksheet
                PT.PivotCache.Refresh
            Next PT
        Next ws
    End Sub
    

    但是,导入的数据会发生变化。有时它很小,有时又很大,所以我的透视表如下所示: enter image description here

    我怎么可能编写代码,或者更改设置,这样那些丑陋的白色行就不会出现?如果没有轴行,我希望保留灰色。我尝试签入透视表格式设置,但没有成功。

    1 回复  |  直到 4 年前
        1
  •  0
  •   urdearboy    6 年前

    此解决方案适用于左枢轴。您需要复制我为右侧轴心添加的两行代码。


    Sub UpdatePivots()
    
    Dim ws As Worksheet
    Dim PT As PivotTable, pvtItem As PivotItem
    Dim LRow As Long
    
    For Each ws In ActiveWorkbook.Worksheets
        For Each PT In ws.PivotTables
            PT.PivotCache.Refresh
            LRow = ws.Range("D" & ws.Rows.Count).End(xlUp).Offset(1).Row
            ws.Range(ws.Cells(LRow, "D"), ws.Cells(100, "G")).Interior.Color = 11184814
        Next PT
    Next ws
    
    End Sub
    

    Sub ColorCode()
    
    Dim Target As Range
    Set Target = Application.InputBox("Select desired cell to return color code", Type:=8)
    
    If Not Target.Count > 1 Then
        MsgBox "Color Code: " & Target.Interior.Color
    End If
    
    End Sub