我有一些我想要索引的数据,以便我可以让Excel通过它并应用各种方法或根据ID的每个“组”查找各种属性。
在A栏中,我有“提供者”的ID。每个提供商将出现1到4次,具体取决于它有多少个子单位(1,2,3或M,出现在B列)。提供者将始终是连续的(如果提供者出现4次,每次提供者将在下一次提交之后)。
因此,第一列看起来像这样,(换位以节省空间):30111,30111,30111,30111,30113,30113,30114,30114,30114,31308 ......等。
我想遍历此列并将这些ID“组合”在一起,以便我可以添加到我的宏中,对每组相同的提供者ID执行操作。换句话说,我需要有某种索引(在数组,列表,集合,字典或其他中),第一个ID包括1-4行,第二个ID包括5-6行等等。
有什么想法吗?到目前为止,我一直在尝试使用数组,字典和集合,但没有成功。我觉得我可能最难以概念化这个问题的正确解决方案。
我认为数据库可能是一个更有用的解决方案,但在excel中工作是我的首要任务,因为它使解决方案变得可移植,更易于设置,可以为更多人理解,并且可能更可靠。
答案 0 :(得分:1)
这是我的意思是拥有一个包含行号的字典商店集合:
'loop to fill dictionary
For Each cell In Selection
id = cell.Value
If Not dict.Exists(id) Then dict.Add id, New Collection
dict(id).Add cell.Row
Next cell
'get the first id and read out its rows
id = dict.Keys(0)
For Each v in dict(id)
Debug.Print v
Next v
我不知道你怎么会觉得字典键必须始终是字符串文字。但是,如果您的单元格值为30111
,则cell.Value
的类型为double,因此在dict.Add cell.Value, ...
之后,键30111
将位于字典中,但"30111"
}(作为字符串)不会,dict("30111")
将返回空。也许这是你的问题?为避免这种情况,您需要使用CStr()
。