【问题标题】:Pivot Table Changing Cell Colors数据透视表更改单元格颜色
【发布时间】:2018-10-20 13:50:26
【问题描述】:

我希望有人能帮我找出 Excel 中数据透视表的一个非常烦人的美学特征。

这是我当前的“分析”屏幕在没有数据透视表的情况下的样子: 但是,我已将数据透视表放在黑匣子中,并有一个宏可以在我导入更多数据后自动更新它们。如下:

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

但是,导入的数据会发生变化。有时它很小,有时它很大,所以我的数据透视表最终看起来像这样:

我怎么可能编写代码或更改设置,这样那些难看的白行就不会出现?如果没有枢轴行,我希望保留灰色。我已尝试检查数据透视表格式设置,但未成功。

【问题讨论】:

  • 您可以使用.DataBodyRange.Rows.Count 属性来确定您的数据透视表使用了多少行,然后适当地格式化其他单元格。
  • 嗨@urdearboy,谢谢你的建议。不幸的是,它不能,因为我的工作簿中有其他内容,例如会受此影响的查询表。此外,这与我的问题无关。
  • @JerryM。明白了。没有考虑到这一点。只是第一次阅读您的问题时突然出现在我脑海中的一个建议:)
  • @urdearboy 没问题!我很欣赏这个建议,只是不幸的是认为它不适用于这里。

标签: excel vba pivot-table


【解决方案1】:

您可以使用标准的最后一行标识符,然后为下面的内部单元格着色。您将需要选择一个最大行号(这里总是将最后一行的颜色降至 100,因此如果需要,请更改为 100)。您还需要设置列,因为您有黑色边框。

最后,您只需要添加颜色代码。如果您还不知道颜色代码,我在下面添加了一些代码来提取颜色代码。

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


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

【讨论】:

  • 我删除了您的 cmets 并重新组织,只是为了解决方案的可读性。您的代码设置没有问题
  • 非常有趣。我将在一分钟内对此进行测试,尽管它看起来很有希望。我没想到要计算数据透视表的大小,这很聪明。
  • 你好。我似乎无法让这个提议的解决方案正常工作,我相信这是因为我问了一个糟糕的问题。我已经编辑了我的问题以反映这个@urdearboy
  • 此外,我使用您的代码示例确定颜色为 11184814
  • 当然。一瞬间:“VBA Runtime Error 1004 “Object-defined error” on line 'ws.Range(ws.Cells(LRow, B), ws.Cells(100, F)).Interior.Color = 11184814'
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2019-11-16
相关资源
最近更新 更多