返回
首页 > 儿童教育

如何将数据区域分割成多个图表系列?

时间: 2023-01-26

问:如图 1所示的列表,如果需要针对列表中的每一行都单独创建一个图表系列,如何快速实现?

图 1

答:方法一:使用公式

首先,将图 1 所示的数据进行整理,如图 2 所示。

图 2

其中,第 1 行的 D1:G1 中为列 A 中的不重复项。

在单元格 D2 中输入公式:

= IF($ A2 = D $ 1,$ C2,NA())

先进至单元格区域 D2:G14 。

选择单元格区域 B1:B14 ,按住 Ctrl 键不放,选择单元格区域 D1:G14 。

插入 XY 散点图,结果如图 3 所示。

图 3

注:在折线图或 XY 散点图中,#N / A 值不会被替换;在条形图或柱状图上,空字符串 ”” 不会被替换。

方法二:使用 VBA

使用循环读取单元格区域的第 1 列,依次通过第 1 列进入行组合,依次每个组合作为图表的一个系列。

首先选择图表,然后运行下面的 VBA 程序,会依次图 4 所示的这种,要求输入数据区域。

图 4

单击确定后,结果如图 5 所示。

图 5

代码如下:

子CreateChartByRow()

暗淡作为图表

调光范围

Dim strPrompt作为字符串

尽可能长的昏暗

点心系列

调光行

Dim lngRowStart只要长

只要Dim lngRowEnd

Dim strSeries作为字符串

如果ActiveChart一无所获

MsgBox“ 请选取图表并重试。”,vbExclamation

转到ExitSub

万一

strPrompt =“ 选择包含数据的 3 列单元格区域。”

strPrompt = strPrompt&vbNewLine&“ 第 1 列:系列标题 ”

strPrompt = strPrompt&vbNewLine&“ 第 2 列: X 值 ”

strPrompt = strPrompt&vbNewLine&“ 第 3 列: Y 值 ”

strPrompt = strPrompt&vbNewLine&“ 避免空单元格 ”

关于错误继续

设置rng = Application.InputBox(Prompt:= strPrompt,Type:= 8)

出错时转到0

如果rng什么都没有,则转到ExitSub

设置cht = ActiveChart

如果cht.SeriesCollection.Count = 0那么退出

cht.SeriesCollection(1)。删除

循环

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

结束于

万一

lngRowStart = lngRow

strSeries = rng.Cells(lngRow,1).Value

lngSrs = lngSrs + 1

万一

下一个

ExitSub:

Application.ScreenUpdating = True

结束

猜你喜欢

版权所有 Copyright©2023 餐饮美食网 版权所有

粤ICP备15109582号

联系邮箱:187348839@qq.com