我每天运行一份报告,根据特定的标识符列出各种文件,这些标识符指示文件中的内容。为了加快我的工作流程,我想通过标识符在一个简单的报告中设置这些文件,以及每个标识符发生的频率,并将这个列表从最频繁到最不频繁地组织。以下是我正在使用的内容:
我宁愿避免创建多个数组,并尽可能创建多个For循环。看起来像二维动态数组SortList(类别,频率)将是要走的路线,但我找不到一种方法来过滤唯一值,同时计算它已经找到的任何值,然后排序事后呢。
我在一个网站上发现了一个非常漂亮的代码,它可以在不使用循环的情况下过滤唯一值...(归功于它到期的地方:http://www.jpsoftwaretech.com/finding-values-in-an-array-without-looping/),但它似乎只适用于一维数组:
Function IsInArray(arr As Variant, valueToFind As Variant) As Boolean
IsInArray = (UBound(Filter(arr, valueToFind)) > -1)
End Function
有没有人对如何应对这种困境提出任何建议?
8/14 - 假设这一点也很重要:这些不是可以在某个文件夹中访问的单个文件;我正在使用的数据只是一个列表。最好说明我正在做的是将这些标识符读作字符串。这是我想要计算,排序和组织的字符串...它似乎可以用初学者的编程技术完成,我似乎无法找到一种方法来做到没有多余的数组或不必要的嵌套循环,如果/然后条件。思考?
答案 0 :(得分:1)
如果您熟悉ADO / DAO,可以尝试查询文件,确保相关字段位于GROUP BY中并输出标识符的COUNT()结果。
答案 1 :(得分:0)
或者,您可以使用集合和数组的组合。
GSeg很好地说明了如何利用这里的数组集合。 Collection of Arrays
通过使用集合,您可以将标识符添加为Key,将其计数添加为第二个数组元素。 由于您无法复制集合中的密钥,因此如果您将标识符用作密钥,它将为您提供唯一的列表。当您尝试添加重复键时,您只需要捕获错误并增加该键的计数。计数将是该集合键的数组中的第二个元素。
希望这是有道理的。祝你好运。