【问题标题】:Excel Chart which takes the difference between two columns for one of the seriesExcel图表,其中一个系列的两列之间的差异
【发布时间】:2015-04-15 17:29:51
【问题描述】:

我在 Excel 2007 中有一个简单的 Excel 堆积柱形图

我想将暴露和对冲列之间的差异显示为蓝条

现在显然我可以通过添加一个新列并在这个新列和对冲列上绘制图表来做到这一点

但是我想知道是否有任何巧妙的方法可以在不添加额外列的情况下做到这一点。

例如,我想知道是否有任何方法可以将系列之一设置为某种动态范围,其中该动态范围由两列之间的差异组成。

或者,Excel 中有一个设置可以做到这一点。不过我不这么认为。

【问题讨论】:

  • 我会说你这样做的方式是最简单的方式,即使你编写了一个脚本,这些值也会存在于某个地方以生成图表。隐藏该列并确保计算结果以及您的图表数据都会下降。
  • Excel 图表必须基于实际范围或硬编码值。没有办法做动态系列。
  • 可以为 Excel 图表制作动态系列 - 例如参见 stackoverflow.com/questions/198045/… - 我的问题是是否可以构建一个动态系列来获取两列之间的差异

标签: excel graph excel-2007 worksheet-function


【解决方案1】:

实际上,可以像这样绘制数据,这在工作表中没有明确显示。我会告诉你怎么做,然后告诉你为什么不应该这样做。

在下面的屏幕截图中,我在 B 列中有一些 X 值,在 C 和 D 列中有一些任意数值(标记为“a”和“b”)。我想绘制两个可见列之间的差异。

为了准备数据,我在功能区的“公式”选项卡上单击了“定义名称”。我为这个名称输入了一个名称,“Delta”和一个定义名称的公式:

=Sheet1!$C$2:$C$5-Sheet1!$D$2:$D$5

由于两个输入范围是 4x1 列范围,因此定义的名称“Delta”本质上是一个 4x1 列范围,其元素是输入范围中对应元素之间的差异。

我从数据范围中选择了一个被删除了几列的空白单元格,并插入了一个图表。在没有选择数据的情况下,创建了一个没有数据的空白图表。

我右键单击图表,从弹出菜单中单击“选择数据”,然后在对话框中单击“添加”,在“系列名称”框中输入“Delta”,在“系列值”框中输入“=sheet1!delta”。然后在水平轴标签下,单击编辑,在轴标签范围框中单击,然后在工作表中选择 B2:B5(包含“A”到“D”)。

结果是在名称“Delta”中绘制计算值的图表。级数公式表明:

=SERIES("Delta",Sheet1!$B$2:$B$5,NameInChartData.xlsx!Delta,1)

这是一项很棒的技术,不是吗?您可以在不弄乱工作表和不显示公式的情况下绘制计算图。

当然,这就是为什么它不是一个伟大的技术:

  1. 其他人不会知道“Delta”是什么,即使他们在 SERIES 公式中找到它。 Name 定义本身并不透明。

  2. 您可能会在几天内自己忘记这一点。

  3. 此处所需的工作表范围和公式可靠且易于理解并在必要时进行修复。

  4. 图表可能有点不稳定,定义的名称也是如此。结合起来,使用名称的图表更是如此。

最可靠的做法是承认公开计算您想要绘制的内容、自豪地显示公式和结果以及使用图表中不同的工作表范围是非常有意义的。

【讨论】:

  • 太棒了!我通常会尽量避免“技巧”——只是我有一个用 Apache POI Java 生成的公式的整个 Excel 页面,而且我不想将所有列名更改到额外列的右侧,因为客户端有“动态”需求,我可以想象下周我会全部改回来!
  • 听起来像我一半的客户。所以使用混淆名称的解决方案,当它坏了你可以额外花费几个小时来修复它。
猜你喜欢
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多