首页 > 解决方案 > VBA excel中如何设置散点图的X轴?

问题描述

这是我的问题:

我得到了这个代码:

'Draw a chart
Dim rng As range
Dim cht As ChartObject

'Your data range for the chart
Set rng = ActiveSheet.range("$G$2:$G$" & row_Position & ",$Z$2:$AC$" & row_Position)

'Create a chart
Set cht = ActiveSheet.ChartObjects.Add( _
    Left:=ActiveCell.Left, _
    Width:=775, _
    Top:=275, _
    Height:=250)

cht.Activate

'Populate chart with data
ActiveChart.SetSourceData Source:=rng

'Add gridlines
ActiveChart.Axes(xlCategory).HasMajorGridlines = True

'Determine the chart type
ActiveChart.ChartType = xlXYScatterLines

所以,代码给我一个看起来像这样的图表:

cht1

所以,请允许我解释一下这一行:

Set rng = ActiveSheet.range("$G$2:$G$" & row_Position & ",$Z$2:$AC$" & row_Position)

G2 到 G+row_Position,表示按钮单击的日期和时间(在按钮单击时我在表格中添加了一个新行)

Z2 到 AC+row_Position,代表我想在图表中显示的 4 列。

如您所见,在上图中,它可以工作。

我的问题:

我现在有一个新列,它是 F2 到 F+row_Position,它们是行的索引,所以数字,从 1 到 row_Position。

事实上,我的图表是散点图,它不是等距的,为此,我想用 F 列替换 G(日期和时间)列......但以下是由此产生的,请看一看:

代码更改为:

Set rng = ActiveSheet.range("$F$2:$F$" & row_Position & ",$Z$2:$AC$" & row_Position)

现在,它看起来像这样:

有 2 行: cht2

有 3 行: cht3

依此类推,直到达到 6 行:

cht4

所以,只是从 G 到 F 的变化导致了这个错误......

我只是想用行号替换日期,以生成打开等距功能的散点图,因为我无法用日期来做到这一点(不知道今天如何)

我希望你能帮助我。

提前致谢。




@edit1:数据是这样的:

在此处输入图像描述

这是它的图表:

在此处输入图像描述

这是带有索引行的图表:

在此处输入图像描述

所以最后,只有数字……没什么特别的……

标签: excelvba

解决方案


如果您只想保持这些日期等距,请不要将它们作为日期输入,而是作为文本输入。所以例如。如果您的时间戳是开头带有撇号的14.6.2018 9:44:11类型。'14.6.2018 9:44:11因此 Excel 将其识别为文本(这使它们等距)。

或者,您可以添加一个帮助列以使用公式将时间戳转换为文本。然后使用辅助列(文本)作为 x 轴。

公式可能与您的本地化不同,但类似于……</p>

=TEXT(F:F, "DD.MM.YYYY hh:mm:ss")

推荐阅读