-1

我目前正在构建一个宏,以允许我导入 Excel 电子表格并将数据格式化为类似报告的结构。

到目前为止,我已经能够使用公式手动完成此操作来聚合数据,但我想自动化其中的许多步骤。

所以,我觉得我有一个决定要做。

由于我要将另一个 Excel 文件导入启用宏的工作簿,我是通过引用范围来处理数据,还是将文件的内容转储到 Variant Array/Collection/Dict?

我想其他人最终会想要使用这个“报告生成器”,所以我试图使转换尽可能无缝。

4

2 回答 2

0

那里有很多报告构建工具。除非我不明白这个问题,否则自己制作似乎是浪费精力。

于 2013-02-15T04:57:31.647 回答
0

除非您要处理大量数据并且速度至关重要,否则我强烈建议您使用 Ranges 作为主要对象。主要优点是:

  • 寻址范围非常灵活,例如Range("A1:B10"), Range(TopCell, BottomCell),Range("NamedRange")
  • .Resize(Rows, Cols)和 '.Offset(Rows, Cols)` 用于灵活引用
  • 您基本上可以修改范围/单元格的所有属性,即不仅可以修改 , 还可以修改.Value, .Formula, .Font, .Border...
  • 大量方法允许高级处理(例如.SpecialCells查找公式/值/...、.Rows.Visible隐藏等)
  • 用一个简单的For Each c in Range("YourRange").Cells循环遍历一个范围内的所有单元格

如果要修改值本身以外的任何内容,则需要使用 Ranges。只有当您想对更大的数据集进行一些复杂的计算时,您才能通过将范围(或任何数据源)的内容读取到数组中来提高性能,在数组/内存中对其进行处理,然后将结果写回范围一冲。这种方法将显着提高计算速度 - 但仅适用于少数情况,如果性能确实很重要,则值得推荐。

关于集合/字典:
不要将它们与范围进行比较——它们是某些任务的有用工具,尤其是。当您想遍历一组成员时。但是范围本身是一种集合,即您可以循环其元素(只是不能删除/添加新成员)。如果你想比较 Collections 和 Dictionary 类的使用,这里是我的快速总结:

集合内置于 VBA 中,因此无需引用。对于我想要循环或寻址的简单聚合,这是我的主要选择。字典的优点是它们提供了额外的功能,主要是一个.Exists属性和一个.Keys集合,允许你也循环遍历散列的键。因此,每当我需要这些功能时,我都会参考 Dictionary(在Microsoft Scripting Runtime中),但在其他方面坚持使用 Collections。

于 2013-02-15T08:22:23.353 回答