我有一些數據正在放入圖表和格式中。有一些業務規則,其中一些數據是「受保護的」,如示例中所示。用「受保護」(或任何其他詞)圖形表示excel時出現的問題是指向X軸底部的圖形。我希望圖表看起來像第二張圖表,但我想避免繪製隱藏的列,因爲我認爲這會混淆我的高級用戶。Excel中的圖表編號在字符串中混合使用
任何想法或見解是值得讚賞!
我有一些數據正在放入圖表和格式中。有一些業務規則,其中一些數據是「受保護的」,如示例中所示。用「受保護」(或任何其他詞)圖形表示excel時出現的問題是指向X軸底部的圖形。我希望圖表看起來像第二張圖表,但我想避免繪製隱藏的列,因爲我認爲這會混淆我的高級用戶。Excel中的圖表編號在字符串中混合使用
任何想法或見解是值得讚賞!
當手動構建圖表:
這裏是我的結果...
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
替代方法
構建具有多個系列的散點圖,通過「攻擊」行分離,格式化,因此它們看起來是一個系列...
這有缺點:
儘管我同意@ OldUgly的回答,如果您認爲這可以理解,也可以在數據旁添加另一列。
=IF(ISNUMBER($B2),$B2,"")
這應該做的伎倆。
這與使用「受保護的」具有相同的問題。使用一個字符串(甚至是一個空字符串)excel將其繪製爲零。我確實玩過這個,並嘗試使用NA()而不是「」。這導致了excel只是插入了前一個點和下一個點之間的界限。對NA()使用隱藏和空單元設置不起作用。它的行爲就好像它被設置爲「用數據線連接數據點」 – KyleUp
如果我聽到您的意見,圖表會爲空字符串填充0,但不會填充真空單元格。如果是這樣的話,你可以做我剛纔提到的,然後選擇你的數據。通過主頁 - >編輯 - >查找和選擇 - >轉到特殊 - >空白查找所有「空白」單元格。然後用Home-> Editing-> Clear-> Clear All清除所有單元格數據/格式。 –
我有點內疚,我無法弄清楚大多數這一點,它似乎是這樣一個簡單的前提。我已經提出了一些解決方法,但它肯定可以做一些改進;
我使用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)))
這使得該範圍的動態稱爲「表」規定的範圍內,但你可以如果需要,只需使用=EVAL(B2:B6)
。
在您的圖表上,將系列值範圍編輯爲Sheet1.xlsm!Chart
(或者您調用的任何表單),並且您將數據範圍的所有「受保護」值轉換爲空白。唯一的問題是,圖表將繪製兩點之間的界線,無論如何,我不能讓圖表繪製出差距。也許有人比我自己有更好的google-fu可以提出一個解決方案?
它是否必須有文本,或者它可以是空白的? – sous2817
是的,我正在尋找的解決方案理想情況下是在繪製列中的文本。 (或者也許有些文檔證明它不能用列中的文本來完成)。 – KyleUp
「受保護」如何到達那裏?這是一個公式嗎? – sous2817