Excel中使用string混合的图表编号
我有一些数据放在图表和格式中。 有一些业务规则,其中一些数据是“保护”的,就像在这个例子中。 用“受保护”(或任何其他词)graphics表示excel的问题是指向X轴底部的graphics。 我希望图表看起来像第二个图表,但是我想避免将一个隐藏的列标出来,因为我认为这会混淆我的高级用户。
任何想法或见解都被赞赏!
手动构build图表时:
- select数据点
- 在格式function区上,select格式select
- 在“格式数据点”上,select“线”,然后select“无线”。
- select下一个数据点(对应于2013)。
- 在“格式数据点”上,select“线”,然后select“无线”。
这是我的结果…
一小部分的VBA将生成图表…
Sub MakeChart() Dim cell As Range, mySerRng As Range, mySrcRng As Range Dim mySht As Worksheet, myChrt As Chart Dim lastRow As Long Set mySht = Worksheets("Sheet1") lastRow = mySht.Range("A" & mySht.Rows.Count).End(xlUp).Row Set mySerRng = mySht.Range(mySht.Cells(1, 2), mySht.Cells(lastRow, 2)) Set mySrcRng = mySht.Range(mySht.Cells(1, 1), mySht.Cells(lastRow, 2)) Set myChrt = mySht.Shapes.AddChart2(-1, xlLine, mySht.Range("C1").Left, mySht.Range("C1").Top).Chart With myChrt .SeriesCollection.Add Source:=mySrcRng, RowCol:=xlColumns, serieslabels:=True, categorylabels:=True, Replace:=True For Each cell In mySerRng If cell.Value = "Protected" Then .SeriesCollection(1).Points(cell.Row - 1).Format.Line.Visible = False .SeriesCollection(1).Points(cell.Row).Format.Line.Visible = False End If Next cell End With End Sub
替代方法
build立多个系列的散点图,以“违规”行分隔,并进行格式化,使它们显示为一个系列…
这有缺点:
- 最终用户可能更容易混淆
- 如果你有大量的“受保护的”数据,需要很多系列
虽然我同意@ OldUgly的回答,但如果您认为这是可以理解的,那么也可以在数据旁添加另一列。
=IF(ISNUMBER($B2),$B2,"")
这应该够了吧。
我有点内疚,我无法想象这个大部分,这似乎是这样一个简单的前提。 我已经提出了一些解决办法,但是可以肯定地做一些改进。
我正在使用名为Eval的VBA函数:
Public Function Eval(varRange As Range) Dim varArray() As Variant varArray = varRange Dim R As Long Dim C As Long For R = 1 To UBound(varArray, 1) For C = 1 To UBound(varArray, 2) If varArray(R, C) = "Protected" Then varArray(R, C) = CVErr(xlErrNA) End If Next C Next R Eval = varArray End Function
并定义一个名为“图表”的范围,具有以下公式
=EVAL(INDIRECT("Sheet1!$B$2:$B$"&1+COUNTA(Sheet1!$B$2:$B$31)))
这使范围dynamic,但你可以使用=EVAL(B2:B6)
如果需要的话。
在您的图表上,将系列值范围编辑为Sheet1.xlsm!Chart
(或者您调用的任何表单),然后将所有“受保护”值转换为空白的数据范围。 唯一的事情是,图表不pipe是哪一点,我都不能把图表绘制出来。 也许有人比我自己更好的谷歌可以拿出一个解决scheme?