如何在Excel中以编程方式使用图表中的每个第n个单元格

一个input文件有大约500,000行。 我试图做的主要事情是在整个单元格范围内只绘制了10,000,000个单元格中的10,000个单元格。 有没有办法使用图表中的每个第50个单元格? 如果没有,是将每个第50个单元格复制到新位置然后绘图的最佳方法?

对于相对较less的数据,可以将x和y – Data设置为单独的单元格列表。

这最好在VBA中以编程方式完成。 电子表格被重命名为“A”,以保持数据string尽可能小。 循环的值和step可能会有所不同:

 [...] Dim xS As String Dim yS As String xS = "=" yS = "=" For i = 1 To 23000 step 50 If i > 1 Then xS = xS & "," yS = yS & "," End If xS = xS & "A!$A$" & CStr(i) yS = yS & "A!$B$" & CStr(i) Next ActiveChart.FullSeriesCollection(1).XValues = xS ActiveChart.FullSeriesCollection(1).Values = yS [...] 

然而,我不确定XValues String的最大长度是多less。 第一次testing显示至less有4032个字符。 这将使您每个Chart-SeriesCollection获得大约350到450个值。 如果您添加约30个系列集合,这可能是一个解决scheme来保存您的10000个值对。 如果date发生变化,这有点麻烦,只值得。

如果您的目的是绘制一个静态的数字列表,最好是以编程方式将单元格复制到第二个电子表格,然后绘制它们:

 [...] for i = 1 to 500000 step 50 destinationSheet.range(1,i/1000).value = sourceSheet.range(1,i).value next [...] 

如果你不想走下VBA路线,你可以利用另一个工作表中的OFFSETfunction从指定的目标中拉出x行并进一步复制。 你可能需要一个帮手列来实现这个..

例如,我可能会有类似=OFFSET($A$1,B1, 0) ,其中列B中的值以50为增量增加…这可能是查看它的不同方式。 然后你可以把你的图表挂上这个数据。