【发布时间】:2020-04-09 19:34:22
【问题描述】:
我的数据集有 2 列(实际上是 22 列)如下所示:
filename1 -"123"
filename1 -"xyz"
filename1 -"abc"
filename2 -"123"
filename2 -"Pieter"
etc.
我想根据文件名分块处理它。为此,我需要根据文件名返回一列或多列的垂直范围(按升序排序)。
现在我正在使用字典构建索引。使用一个简单的循环来计算每个唯一值,因此文件名 1、3 - 文件名 2、2 等,然后是第二个循环来读出每个文件名的行数。有了这个,我当然可以计算出我的方式。但是有没有一种不同的,也许更聪明的技术?
Set dictFilenames = CreateObject("scripting.dictionary")
For Each row In Range("A:A")
file = row.Value
If Len(file) > 0 Then dictFilenames(file) = dictFilenames(file) + 1
Next row
For i = 0 To dictFilenames.Count - 1
Debug.Print dictFilenames.Keys()(i), dictFilenames.Items()(i)
Next
【问题讨论】:
-
这对我来说很好,除非您想存储每个文件名的实际范围,而不仅仅是计数。
标签: excel vba dictionary indexing