在Excel中创建带计算的多折线图?

在Excel中创建带计算的多折线图?,excel,charts,pivot-table,excel-2013,Excel,Charts,Pivot Table,Excel 2013,各位嘉宾: 我的帖子之前模棱两可,所以这里是第二次尝试 我有以下数据表: 以及我想制作的手绘示例: 我想制作一个图表,显示所有代码(原始图表数据pic的左栏)的计算值,这些代码具有相同的前四位数字。我想为每个日期显示一个数据点,将“a”列下的所有值相加。对于“B”列,我也会这样做。“P”数据点是有问题的,因为它将使用以相同前四位数字开头的每个代码进行计算。我指的是原始图表数据图片中电子表格顶部每个日期下的“A”、“B”和“P” “p”是一个%值,对于给定的单个代码,它具有相应的“a”和

各位嘉宾:

我的帖子之前模棱两可,所以这里是第二次尝试

我有以下数据表:

以及我想制作的手绘示例:

我想制作一个图表,显示所有代码(原始图表数据pic的左栏)的计算值,这些代码具有相同的前四位数字。我想为每个日期显示一个数据点,将“a”列下的所有值相加。对于“B”列,我也会这样做。“P”数据点是有问题的,因为它将使用以相同前四位数字开头的每个代码进行计算。我指的是原始图表数据图片中电子表格顶部每个日期下的“A”、“B”和“P”

“p”是一个%值,对于给定的单个代码,它具有相应的“a”和“B”数值。我会用P乘以B,得到每一个具有相同前四位数字的代码,然后对每个结果求和。然后,我将把这个总和除以相同代码的所有“B”值之和

我想为每一组以相同四位数字开头的代码创建一个单独的三线图。正如评论中所建议的,将“P”值作为次轴,并将主轴用于“a”和“B”是有意义的

这些代码会改变,每周都会添加新的日期和相关值,所以我希望随着原始数据的添加/更改,这个图表是动态的

是否有任何方法可以在Excel中对图表执行类似的计算?我想我对VBA和Excel的公式已经足够熟悉了,可以做到这一点,但我想我会找到答案的

谢谢大家,

安格斯

2张床单设置

1)Sheet1被称为
DataSheet
并镜像您的数据输入表

2)Sheet2被称为
ChartData
,具有用于绘制图表和图表本身的转换数据集。这就是您实际希望数据集用于图表的方式。因此,如果您可以更改报告的格式,请始终尝试按照所示进行“平面文件”表格排列

以下是“之后”状态下的外观:

数据表表:

单元格
B2
数据表中
可以输入4位代码来绘制图表

请注意前导的“0”以在开头保留0

第4行中的公式:

A)F4对于
p

=IFERROR(SUMPRODUCT(OFFSET($A$6,0,SUM(COLUMN(H1)-1),COUNTA(Codes),1),--(LEFT(Codes,4)=$B$2),OFFSET($A$6,0,SUM(COLUMN(F1)-1),COUNTA(Codes),1))/H4,"")
这适用于p计算

B)G4对于
A

=SUMPRODUCT(OFFSET($A$6,0,SUM(COLUMN(G1)-1),COUNTA(Codes),1),--(LEFT(Codes,4)=$B$2))
对于给定的4位起始代码,计算G列的总和

C)H4用于
B

=SUMPRODUCT(OFFSET($A$6,0,SUM(COLUMN(H1)-1),COUNTA(Codes),1),--(LEFT(Codes,4)=$B$2))
对于给定的4位起始代码,这将对H列求和

您可以复制粘贴这些3块,以设置未来范围的公式,即选择F4:H4并复制到I4:K4等,公式将适用于新范围。抱歉,我还没有调整这些,因此可以以某种方式拖动

向@Tom Sharpe和@shrivallabha.redij大声呼喊,以解决sumproduct之谜,这是解决方案的一部分

图表数据表:

A)B4中的公式:

=DataSheet!F2
这可确保开始日期设置为范围内的第一个日期

B)B5中的公式可向下拖动B列:

=IF(ROWS($B$4:$B5) <=INT(COLUMNS(dates)/3),$B$4+ROWS($B$5:$B5)*7,NA())
这将检索B列日期的
p、A和B
dataRange
是将源计算保存在数据表中的动态范围。如果打开名称管理器,选择
dataRange
,然后将光标放在引用范围内,它引用的动态范围用“marching ants”表示:

如果
图表数据
表中的日期列(B)为#N/A,则关联的p、A和B默认为#N/A,因此不会绘制

绘制图表:

图表本身是一个包含4个动态系列的组合图表

序列是以正常方式添加的,但是您引用了前面有
Sheetname的动态序列;如图所示。您可以使用
pSeries、aSeries、b Series
dateSeries
进行绘图

图表轴应设置为处理每周数据点

组合图设置:

注p绘制在辅助x轴上,并以百分比形式格式化

更新过程:

1) 在数据表中添加新行

2) 将三列的块复制到下一列。请注意,块的第一列有一个+7以增加周数

3) 转到图表数据,并向下拖动B:E列中的公式

4) 在
数据表
单元格B2中选择您感兴趣的代码,所有内容都会更新

所需命名范围:

使用动态命名范围。Ctrl&F3将打开名称管理器,以便您可以添加这些名称

动态命名范围的公式:

代码

数据范围

=OFFSET(DataSheet!$F$4,0,0,1,COUNT(DataSheet!$F$2:$XFD$2))
日期

pSeries

=OFFSET(DataSheet!$P$11,0,0,COUNT(DataSheet!$B$11:$B$1048576),1)
阿瑟里斯

=OFFSET(ChartData!$D$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)
B系列

=OFFSET(ChartData!$E$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)
日期系列:

=OFFSET(ChartData!$B$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)
注意:对于早期版本的Excel,必须调整结束行和结束列

结束行1048576变为65536 结束列XFD变为IV

其他版本信息:


我甚至可以在这张图上嵌入一张手工绘制的图表。我有点困惑。例如,对于给定的日期,您有两个B列(我假设您指的是日期下的字母)。唯一能区别这些的显然是颜色(蓝色/黄色)和它们出现的顺序。您没有提及其中哪一个将用于计算P,也没有显示A的值,这将使我能够自己计算出来。请看。我认为这个问题需要先澄清
=OFFSET(ChartData!$D$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)
=OFFSET(ChartData!$E$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)
=OFFSET(ChartData!$B$4,0,0,COUNT(ChartData!$B$11:$B$1048576),1)