問:如圖 1所示的列表,如果需要針對列表中的每一行都單獨創(chuàng)建一個圖表系列,如何快速實現(xiàn)?
圖 1
答:方法一:使用公式
首先,將圖 1 所示的數(shù)據(jù)進行整理,如圖 2 所示。
圖 5
代碼如下:
子CreateChartByRow()
暗淡作為圖表
調(diào)光范圍
Dim strPrompt作為字符串
盡可能長的昏暗
點心系列
調(diào)光行
Dim lngRowStart只要長
只要Dim lngRowEnd
Dim strSeries作為字符串
如果ActiveChart一無所獲
MsgBox“ 請選取圖表并重試?!?,vbExclamation
轉(zhuǎn)到ExitSub
萬一
strPrompt =“ 選擇包含數(shù)據(jù)的 3 列單元格區(qū)域。”
strPrompt = strPrompt&vbNewLine&“ 第 1 列:系列標題 ”
strPrompt = strPrompt&vbNewLine&“ 第 2 列: X 值 ”
strPrompt = strPrompt&vbNewLine&“ 第 3 列: Y 值 ”
strPrompt = strPrompt&vbNewLine&“ 避免空單元格 ”
關(guān)于錯誤繼續(xù)
設置rng = Application.InputBox(Prompt:= strPrompt,Type:= 8)
出錯時轉(zhuǎn)到0
如果rng什么都沒有,則轉(zhuǎn)到ExitSub
設置cht = ActiveChart
做
如果cht.SeriesCollection.Count = 0那么退出
cht.SeriesCollection(1)。刪除
循環(huán)
strSeries =“”
lngSrs = 0
對于lngRow = 1到rng.Rows.Count + 1
如果rng.Cells(lngRow,1).Value <> strSeries或lngRow> rng.Rows.Count然后
如果lngSrs> 0然后
lngRowEnd = lngRow-1
設置srs = cht.SeriesCollection.NewSeries
與srs
.values = rng.Cells(lngRowStart,3).Resize(lngRowEnd +1-lngRowStart)
.XValues = rng.Cells(lngRowStart,2).Resize(lngRowEnd +1-lngRowStart)
.Name = rng.Cells(lngRowStart,1).Value
.ApplyDataLabelsShowSeriesName:=正確,_
ShowCategoryName:= False,ShowValue:= False
結(jié)束于
萬一
lngRowStart = lngRow
strSeries = rng.Cells(lngRow,1).Value
lngSrs = lngSrs + 1
萬一
下一個
ExitSub:
Application.ScreenUpdating = True
結(jié)束