解决scheme对300万个数据点进行大量计算并制作图表

我有一个约30万行,约100列的Excel电子表格

我需要在这个电子表格上执行各种function,在这个电子表格中,我需要创build大约3000个其他更小的电子表格

对于每个创build的电子表格,我将需要有一个单独的PowerPoint文件,将有一个自动生成的graphics

我做了大量的VBA编程,但是我对这个项目有些迷茫

  1. 如果我把数据转储到一个mysql文件中,对我来说,处理我的任务会更容易些?
  2. 在VBA excel中这样做是否可行?
  3. 是否可以轻松地从Excel中以graphics方式将graphics添加到PowerPoint中? 或者也许我应该使用不同的图解解决scheme?

  1. 这很大程度上取决于您计划如何处理数据。 如果您打算在Excel中编写代码,将其保留在Excel中更有意义。 话虽如此,我会转储数据到CSV(逗号分隔)进一步处理与Python不同的工具,如Python。

  2. 给予足够的时间和金钱,一切都是可行的。 如果你像大多数其他程序员一样,你也没有太多,所以你需要最有效的解决scheme,或接近它。 如果是我,我会在Python中编写代码来读取CSV文件中的数据,执行所有必需的操作,并将3000个独立的输出集保存为单独的CSV文件,这些文件可以导入到Excel中。

  3. 从VBA创build和操作图表可能会非常棘手。 我将使用像Matplotlib这样的Python库来产生所有的graphics输出,这些输出将被作为PNG图像保存到磁盘,这些图像可以被插入到Powerpoint演示文稿中。

这里只提到Python作为例子。 你应该使用你最熟悉的工具; 然而,以编程方式处理数据的概念(不是通过互连的单元格引用和带有less量VBA的公式来复制表单等)的概念仍然适用,并且将是您在此处的最佳方式。 我已经做了很多你描述的工作。 获取数据到CSV并用代码处理数据。

这在所有方面都是可行的,但是VBA可能会带来太多的开销,因为在打开和closures3000个电子表格和演示文稿的Excel和PowerPoint实例时,这是非常笨拙的。 如果这是一次性的解决scheme,而且只需要这样做一次,VBA肯定是快速开发的,所以使用对象模型可以节省很多前期工作。 另一种select是从C#或VB.NET中的Interop应用程序执行此操作,您可以在其中更好地控制环境,如垃圾收集。

但是,如果您使用的是Excel 2007/2010(我假设您是因为30万行),我会做一些不同的事情。 我会在VBA中的主要XLSX上执行calc例程,然后使用Open XML来处理和创build3000个电子表格并使用图表进行演示。 ( 注意我不会在主XLSX上使用Open XML,因为它实际上并不提供内置计算 – 您仍然需要打开XLSX来“保存”电子表格 – 所以在这种情况下VBA会更好 ) 。

如果你是Open XML的新手,有很多事情需要学习,所以果汁可能是不值得的。 但是如果你想知道或者已经有了Open XML,那么这样的文章是非常有用的,这是一个很好的起点(因为它也处理图表)。 但是你也可以在Open XML SDK上使用像Simple OOXML这样的包装器,这对于开始来说是相当不错的。

看一下名为“R”的开源统计系统。 在编程上生成来自真实世界的数据集的图表和图表是相当不错的。

http://www.r-project.org/

我不能回答2和3,但对于1:我肯定会build议不要这样做,根据你的问题…当然,你没有解释到底需要什么样的操作数据,所以很可能是我在这里错了。

你的情况让我想起正则expression式的说法:“有些人遇到问题时,会立即用正则expression式来解决,现在有两个问题。 你不想要一个额外的问题。

如果你必须使用数据库来做到这一点(简单地说,因为在Excel中做的不够好),我会坚持使用微软的Access或SQL Server,这可能会为你节省一些麻烦。 (从来没有想过我会这样说)