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

标签 vba excel

输入文件大约有 500,000 行。我想做的主要事情是在整个单元格范围内仅绘制 500,000 个单元格中的 10,000 个单元格。有没有办法以编程方式使用图表中的每 50 个单元格?如果不是,最好的方法是将每 50 个单元格复制到新位置,然后进行绘图?

最佳答案

对于相对少量的数据,可以将 x 和 y - 数据设置为单独单元格的列表。

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

[...]
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 字符串的最大长度是多少。第一次测试显示至少有 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
[...]

关于vba - 如何以编程方式使用 Excel 图表中的每个第 n 个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21459820/

相关文章:

ms-access - 运行时错误 '3264' Access 2010 VBA

python - 将 .xll 作为 AddIn 添加到 Excel

vba - 将列中单元格的值与用户输入的 ComboBox 值进行比较

vba - 如何获取发件人的电子邮件地址?

vba - 多列合并为一列

c# - 如何知道 Process.Start() 是否成功?

excel - 将数字添加到 Excel 中列的值

c# - 如何调试 base.Dispose(disposing) 样板上发生的 NullReferenceException

sorting - Excel VBA : How do you combine two columns into a first-level sort?

vba - 如何在代码中 Access 控件的标签