Excel图表数据点颜色随过滤器使用情况而变化

时间:2018-02-05 12:05:02

标签: excel vba excel-vba

我希望有人可以帮我解决以下问题。我使用了3种不同的VBA编码方法(来自本网站的2种方法),所有这些方法都在同一个障碍中徘徊。

我有一个电子表格,它使用2列作为散点图的数据源。此图表中的数据点基于第3列中使用的条件格式设置。因此,在第3列中,如果值为" X",则数据点应为粉红色。否则数据点应为绿色。这工作正常。 我是怎么做到的:https://www.reddit.com/r/excel/comments/3x2cme/scatter_plot_with_color_based_on_a_third_value/ 这是我的编码:

Sub ColorCode()
    Dim i As Integer
    Dim MyCount As Integer
    MyCount = ActiveChart.SeriesCollection(1).Points.Count * ActiveChart.SeriesCollection.Count
    'MsgBox ActiveChart.SeriesCollection(1).Points.Count * 
    ActiveChart.SeriesCollection.Count
    For i = 1 To MyCount
        ActiveChart.SeriesCollection(1).Points(i).Select
        With Selection.Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = Range("i" & i + 1).DisplayFormat.Interior.Color
        End With
    Next
End Sub

但是,当我过滤源数据时,数据点的颜色会发生变化。我发现了以下几点: - 当数据源未经过滤时,第3列中的第4行数据为粉红色。这很好。 - 过滤数据源时,第3列中的第4行数据为绿色。这很好。 - 但是,此过滤行的相关数据点为粉红色,应为绿色 - 过滤后的源表中的第4行数据将始终保留原始未过滤表的第4行的条件格式。

我需要的是过滤器对数据点的颜色没有影响,但仍然隐藏过滤掉的数据点。或者换句话说,在过滤数据时,数据点将保留其过滤前上面应用的VBA代码的颜色属性。

2 个答案:

答案 0 :(得分:0)

阵列很方便。

Sub ColorCode()
    Dim i As Integer, n As Integer
    Dim MyCount As Integer
    Dim rngColor As Range, vRng() As Range

    MyCount = ActiveChart.SeriesCollection(1).Points.Count * ActiveChart.SeriesCollection.Count
    Set rngColor = Range("i2", Range("i" & Rows.Count).End(xlUp))
    Set rngColor = rngColor.SpecialCells(xlCellTypeVisible)
    For Each Rng In rngColor
        n = n + 1
        ReDim Preserve vRng(1 To n)
        Set vRng(n) = Rng
    Next Rng

    'MsgBox ActiveChart.SeriesCollection(1).Points.Count *    ActiveChart.SeriesCollection.Count
    For i = 1 To MyCount
        ActiveChart.SeriesCollection(1).Points(i).Select
        With Selection.Format.Fill
            .Visible = msoTrue
            '.ForeColor.RGB = Range("i" & i + 1).DisplayFormat.Interior.Color
            .ForeColor.RGB = vRng(i).DisplayFormat.Interior.Color
        End With
    Next
End Sub

答案 1 :(得分:0)

这有助于解决一些类似的图表格式问题:

Excel文件标签>选项>高级>图
取消选中'属性按照当前工作簿的图表数据点'