我有一些数据,我将其放入图表和格式。有一些业务规则,其中一些数据是“受保护的”,如示例中所示。使用“受保护”(或任何其他单词)excel这一单词绘制图形时出现的问题是指向X轴底部的图形。我希望图表看起来像第二张图表,但我想避免绘制一个隐藏的列,因为我认为它会让我的高级用户感到困惑。
感谢任何想法或见解!
答案 0 :(得分:6)
手动构建图表时:
以下是我的结果......
将生成图表的一小部分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
替代方法
构建一个包含多个系列的散点图,由“违规”行分隔,并进行格式化,使它们看起来像是一个系列......
这有缺点:
答案 1 :(得分:0)
虽然我同意@ OldUgly的答案,但如果您认为可以理解,您还可以在数据旁边添加另一列。
var app = angular.module("app", []);
app.controller('ctrl', ['$scope','$http', 'appSettings', function ($scope,$http,
appSettings)
{
$scope.CountryList = [];
$http.post(appSettings.Settings.CountriesUrl).then(function(a) {
$scope.CountryList = a.data;
});
}]);
这应该可以解决问题。
答案 2 :(得分:0)
我有点内疚,我无法解决大部分问题,这似乎是一个简单的前提。我已经做了一些解决方法,但它肯定可以做一些改进;
我正在使用名为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
一个名为' Chart'的定义范围具有以下公式
=EVAL(INDIRECT("Sheet1!$B$2:$B$"&1+COUNTA(Sheet1!$B$2:$B$31)))
这使得范围变得动态,但如果需要,您可以使用=EVAL(B2:B6)
。
在您的图表上,将系列值范围编辑为Sheet1.xlsm!Chart
(或调用您的工作表),并获得任何"受保护"的数据范围。值转换为空格。唯一的一点是,图表将绘制两点之间的线,无论如何,我无法使图表绘制差距。也许有一个比我更好的google-fu的人能想出一个解决方案吗?