【发布时间】:2018-08-14 15:45:32
【问题描述】:
这是我关于 stackoverflow 的第一个问题,我非常愿意接受有关如何/在何处/何时提出更好的问题以及如何更好地为 stackoverflow 做出贡献的反馈。
背景:
我的最终目标是在各个测试实验室按日期绘制预计的设备使用情况。
我在多个实验室使用相同的设备,我正在创建一个表格,显示每个实验室的设备使用情况的未来预测。
我的开始:
我有一个包含多个工作表的 Excel 文档,每个工作表都包含有关在什么时间段内哪个测试机构将使用哪些设备的信息。
我的目标:
为每个测试实验室创建设备使用图表。该图表将显示在给定日期每件设备中有多少正在使用。我的目的是为每种类型的设备制作一个图表系列,以日期为 X 轴,在 Y 轴上使用该设备的件数。
到目前为止我做了什么:
我已经编写了循环遍历所有信息表的代码,并创建了每个唯一测试实验室名称的 vba 集合和我想要跟踪的每个唯一设备的单独 vba 集合。此代码还查找使用任何设备的第一个日期和最后一个日期。
帮助请求:
因为我基本上有三个“维度”——测试实验室、设备部件和设备使用日期——我计划使用 3D 数组来聚合我的所有数据并为我的使用图提供源。该数组的一维是设备,第二维是日期,第三维是测试实验室。
但是,在我考虑过这个实现时,它似乎相当笨拙。它将保存我的所有数据,但据我所知,我不能通过键或标签来引用数组的元素。我必须创建单独的 2D 数组来保存 3D 数组的每个维度的索引标签。
Excel VBA 中是否有支持每个维度的索引键的 3D 数据结构?
搜索和尝试失败:
我首先尝试创建一个独特的数组来保存设备和使用日期,每个数组都以一个独特的测试实验室命名。我从这篇文章中了解到,我无法在 sub:Naming an array using a variable 中动态创建和命名未定义数量的新数组。
然后我研究了是否可以使用我已经创建的集合以某种方式充当数组索引的标签,但似乎我无法通过键找到集合索引。每次我想引用 3D 数组中的元素时,我都必须遍历集合以查找索引:Retrieve the index of an object stored in a collection using its key (VBA)。
【问题讨论】:
-
您可能会沿着 vba 中的结构或类的路线查看。它们是一种将多条相关信息保存在一起的方法,您可以创建一个列表或集合。查看这篇文章,看看这是否是你所追求的。 stackoverflow.com/questions/12414168/…
-
可以考虑使用嵌套的
scripting.dictionaries或collections。外部Dictionary将实验室 ID 作为键保存,每个项目都是另一个dictionary,将设备 ID 作为键和日期作为项目。 -
谢谢你们的cmets!我正在尝试创建一个自定义数据类型,该类型在 Jeremy 的建议文章中建模,其中包含 Victor K 和 HackSlash 建议的类型中的 scripting.dictionaries。当我得到它的工作时,我应该如何展示解决方案?我会回答我自己的问题吗?
-
是的。如果你愿意,你可以回答你自己的问题。