动态里程碑趋势分析图在 Excel 和 VBA 中需要与 x 轴相同的 y 轴
Dynamic Milestone Trend Analysis Graph needs same y-axis as x-axis in Excel with VBA
经过几个小时的工作,我带着这个图形问题来找你们。我需要创建一个可以在 german wikipedia 上看到的里程碑-趋势分析,但在英文版中看不到。
一般信息
简而言之,图表的 x 轴上有报告日期(目前,每个月的第一天,都会有另一份报告到期)。
y 轴应完全镜像 x 轴。长度和刻度线。日期从底部到顶部变大。
在我的例子中,x 轴位于图的顶部。
每份报告都包含多个“截止日期”,一个用于每个正在进行的任务。它们是该特定作业的估计“完成日期”。
如果预计完成日期在下一个报告期间保持不变,则该分配的图表将保持在同一水平。如果估计较早,则图表趋于下降。通常它们会上升,因为分配有一些延迟:-D
x轴需要是动态的,因为当它的最后一个作业完成时,整个项目基本上就完成了。如果其中一项作业延迟 运行,则整个项目都会延迟,因此 x 轴需要 longer/get 个刻度。
由于 y 轴反映了这一点,它也必须改变。
我的问题
x 轴有许多离散值,因为每个月或每两周都会收到报告。但这并没有改变。
完成日期的值是连续的,因为分配可以随时终止。
这给我留下了一个问题,即必须将 y 轴分成大小相等的块,尽管一年中的月份大小不相等。至少我认为 excel 迫使我去做。
我可以为 y 轴分配一个最大限制和一个最小限制,我可以分配每个主要刻度线之间的距离。由于 Excel 每个日期都使用连续数字,因此 2014/01/01 为 41640。而 2015/01/01 为 42005。因为我在 x 轴上有 12 个月,我需要 12 y 轴,我必须让主刻度线位于 30.42 的距离处......这让我在我的轴上有接下来的月份
一月一月三月....十二月十二月
有人知道这个问题的答案吗?有没有办法让 excel 使 y 轴上的刻度线不等距?
非常感谢任何意见。
卡兹
我没有找到使 Excel 具有可变刻度线距离的方法。但因为我不能那样做,所以我不得不让这个月同样长。
现在对我有用:
'calculate the norm for different type of month including Schaltjahr
Select Case cellMonth
'February
Case 2
'Schaltjahr and Schaltjahrhundert
If (cellYear Mod 4 = 0) Or (cellYear Mod 400 = 0) Then
resultDay = (30 / 29) * cellDay
Else
resultDay = (30 / 28) * cellDay
End If
'31 day months
Case 1, 3, 5, 7, 8, 10, 12
resultDay = (30 / 31) * cellDay
'30 day months
Case Else
resultDay = cellDay
End Select
现在我只需要将轴缩放到 numberOfMonths * 30
。它现在离开调整 y 轴的名称,这似乎是一个完全不同的故事。
卡兹
您可以通过添加虚拟 XY 系列来沿 Y 轴放置任意标签。
以下是我认为可以解决您的问题的一些数据,以及显示数据的折线图,以及我将用来构建虚拟 Y 轴的数据。
我使用了折线图,所以至少 X 轴很容易。您只需确保轴的格式设置为具有基本天数的日期轴。
这是我构建轴的方法。
左上图下方: 我复制了虚拟轴数据,数据的两列都包括 header 行。我选择了图表,并使用选择性粘贴将数据添加为新系列,列中的数据,第一行中的系列名称,第一列中的类别(但不要替换现有类别)。
右上角图表如下:我right-clicked在添加的系列上,单击“更改系列图表类型”,然后选择带有线条和标记的 XY 散点图。 Excel 也把这个系列放在副坐标轴上。
下方中间左图:我将添加的系列格式化为绘制在主轴上。
下图右中: 我改变了纵轴的比例,给它第一个日期的最小值和最后一个日期的最大值(1/1/16 到9/1/16).
下图左下角:我将垂直轴格式化为不显示标签。
下图右下角:格式格式格式。我格式化了虚拟轴系列,因此它使用了浅色加里线(与水平轴匹配)和浅灰色十字标记(模拟刻度线)。我更改了水平轴的刻度线,使它们穿过轴,与虚拟系列的十字标记相匹配。我在虚拟系列点的左侧添加了数据标签,模拟垂直轴标签。
经过几个小时的工作,我带着这个图形问题来找你们。我需要创建一个可以在 german wikipedia 上看到的里程碑-趋势分析,但在英文版中看不到。
一般信息
简而言之,图表的 x 轴上有报告日期(目前,每个月的第一天,都会有另一份报告到期)。 y 轴应完全镜像 x 轴。长度和刻度线。日期从底部到顶部变大。 在我的例子中,x 轴位于图的顶部。
每份报告都包含多个“截止日期”,一个用于每个正在进行的任务。它们是该特定作业的估计“完成日期”。
如果预计完成日期在下一个报告期间保持不变,则该分配的图表将保持在同一水平。如果估计较早,则图表趋于下降。通常它们会上升,因为分配有一些延迟:-D
x轴需要是动态的,因为当它的最后一个作业完成时,整个项目基本上就完成了。如果其中一项作业延迟 运行,则整个项目都会延迟,因此 x 轴需要 longer/get 个刻度。 由于 y 轴反映了这一点,它也必须改变。
我的问题
x 轴有许多离散值,因为每个月或每两周都会收到报告。但这并没有改变。 完成日期的值是连续的,因为分配可以随时终止。
这给我留下了一个问题,即必须将 y 轴分成大小相等的块,尽管一年中的月份大小不相等。至少我认为 excel 迫使我去做。
我可以为 y 轴分配一个最大限制和一个最小限制,我可以分配每个主要刻度线之间的距离。由于 Excel 每个日期都使用连续数字,因此 2014/01/01 为 41640。而 2015/01/01 为 42005。因为我在 x 轴上有 12 个月,我需要 12 y 轴,我必须让主刻度线位于 30.42 的距离处......这让我在我的轴上有接下来的月份
一月一月三月....十二月十二月
有人知道这个问题的答案吗?有没有办法让 excel 使 y 轴上的刻度线不等距?
非常感谢任何意见。
卡兹
我没有找到使 Excel 具有可变刻度线距离的方法。但因为我不能那样做,所以我不得不让这个月同样长。
现在对我有用:
'calculate the norm for different type of month including Schaltjahr
Select Case cellMonth
'February
Case 2
'Schaltjahr and Schaltjahrhundert
If (cellYear Mod 4 = 0) Or (cellYear Mod 400 = 0) Then
resultDay = (30 / 29) * cellDay
Else
resultDay = (30 / 28) * cellDay
End If
'31 day months
Case 1, 3, 5, 7, 8, 10, 12
resultDay = (30 / 31) * cellDay
'30 day months
Case Else
resultDay = cellDay
End Select
现在我只需要将轴缩放到 numberOfMonths * 30
。它现在离开调整 y 轴的名称,这似乎是一个完全不同的故事。
卡兹
您可以通过添加虚拟 XY 系列来沿 Y 轴放置任意标签。
以下是我认为可以解决您的问题的一些数据,以及显示数据的折线图,以及我将用来构建虚拟 Y 轴的数据。
我使用了折线图,所以至少 X 轴很容易。您只需确保轴的格式设置为具有基本天数的日期轴。
这是我构建轴的方法。
左上图下方: 我复制了虚拟轴数据,数据的两列都包括 header 行。我选择了图表,并使用选择性粘贴将数据添加为新系列,列中的数据,第一行中的系列名称,第一列中的类别(但不要替换现有类别)。
右上角图表如下:我right-clicked在添加的系列上,单击“更改系列图表类型”,然后选择带有线条和标记的 XY 散点图。 Excel 也把这个系列放在副坐标轴上。
下方中间左图:我将添加的系列格式化为绘制在主轴上。
下图右中: 我改变了纵轴的比例,给它第一个日期的最小值和最后一个日期的最大值(1/1/16 到9/1/16).
下图左下角:我将垂直轴格式化为不显示标签。
下图右下角:格式格式格式。我格式化了虚拟轴系列,因此它使用了浅色加里线(与水平轴匹配)和浅灰色十字标记(模拟刻度线)。我更改了水平轴的刻度线,使它们穿过轴,与虚拟系列的十字标记相匹配。我在虚拟系列点的左侧添加了数据标签,模拟垂直轴标签。