2012-06-26 80 views
2

有没有办法让Excel图表在隐藏的行中绘制数据,但不是在隐藏的列中?我已经知道如何使用“选择数据”选项,右键单击图表时,转到“隐藏和空单元格”选项,该选项提供了“隐藏行和列显示数据”的选项。然而,我找不到一种方式来显示隐藏行中的数据,而没有在隐藏列中显示数据,并希望有人能够提出一个VBA解决方案。如何在Excel图表中显示隐藏行,但不显示隐藏列?

非常感谢,

杰夫

+0

这里可能有更好的方法,但是您可以从头创建图表并循环遍历数据范围中的列,选择仅添加可见列。或者,您可以选中“隐藏行和列中显示数据”,并使用VBA遍历系列值来查看列是否隐藏,如果是,则从图表中删除该系列。 –

+0

谢谢Scott。这绝对是值得一试的。不过,我并不太确定如何创建这样的代码。是否有一些通用代码可以为您提供的第二个选项提供,假设列D:AE全部填充,并且在不同情况下,不同列将被隐藏? –

回答

0

我只是灌输这件事给你。作为一个警告,使用图表可能会非常棘手。此代码只适用于某些类型的图表,并且您可能需要进行一些调整才能使用您的特定数据集。

Option Explicit 

Sub RemoveHiddenColumns() 

Dim myChart As ChartObject 
Set myChart = ActiveSheet.ChartObjects("Chart 1") 'place in here whichever chart you need to reference, asssumes the chart is on the activesheet 

myChart.Activate 'first activate the chart 

Dim i As Integer 

For i = 1 To ActiveChart.SeriesCollection.Count 'loop through each series 

    Dim strText As String, strCol As String, strSht As String, intCol As Integer 

    strText = Split(ActiveChart.SeriesCollection(i).Formula, ",")(2) 'extract sheet name and column of series 
    strSht = Split(strText, "!")(0) 'get sheet name of series 
    strCol = Split(strText, "!")(1) 'get column range of series 

    Dim wks As Worksheet 
    Set wks = Worksheets(strSht) 

    If wks.Range(strCol).EntireColumn.Hidden = True Then 'if the column is hidden 
     ActiveChart.SeriesCollection(i).Delete 'remove the series 
    End If 

Next 


End Sub 
+0

非常感谢。这是一个巨大的帮助,我真的很感谢你的努力! –

+0

这是一个很好的问题。我喜欢解决它:) –