输入文件大约有500,000行。我要做的主要是在整个细胞范围内仅绘制500,000个细胞中的10,000个细胞。有没有办法以编程方式使用图表中的每个第50个单元格?如果没有,是将每个第50个单元复制到新位置的最佳方法,然后绘制?
答案 0 :(得分:2)
对于相对较小的数据,可以将x和y - 数据设置为单独的单元格列表。
这最好在VBA中以编程方式完成。电子表格重命名为“A'保持数据字符串尽可能小。循环中to
和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的最大长度是多少。首次测试显示至少4032个字符。这将为您带来每个Chart-SeriesCollection大约350到450个值。如果添加大约30个系列集合,这可能是保存10000个值对的解决方案。 如果您的日期发生变化,这有点麻烦,只值得。
如果您打算绘制静态数字列表,最好以编程方式将单元格复制到第二个电子表格,然后绘制它们:
[...]
for i = 1 to 500000 step 50
destinationSheet.range(1,i/1000).value = sourceSheet.range(1,i).value
next
[...]
答案 1 :(得分:0)
如果您不想沿着VBA路线走下去,可以利用另一张表中的OFFSET功能从指定目标中提取x行并进一步向下复制。您可能需要帮助列才能实现此目的。
例如,我可能会有类似=OFFSET($A$1,B1, 0)
的内容,其中B列中的值以50为增量增加...这可能是另一种查看方式。然后,您可以将图表挂钩到此数据。