字典(Dictionary)是一种通过键(key)和项(item)(注:键和项是字典中的术语)存储唯一项的方法。它是一种基于唯一键存储数据的极好工具,它的强大之处在于可以使用键来存储和合并数据。在本文中,讲解如何在字典中捕获一个单元格区域并将其引用回Excel。这里,将存储一个10行的单元格区域,然后只输出该区域中唯一的项目。示例如下图1所示。获取其数据区域,使用字典将数据存储,然后使用VBA数组提取我们选择需要获取唯一值的列。设置字典非常简单:可以直接创建字典对象,而无需引用Microsoft
Scripting Runtime。下面的代码创建字典引用:With
CreateObject('Scripting.Dictionary')另一种方式是,在VBE中单击“工具-引用”命令,在“引用”对话框中,勾选“Microsoft
Scripting Runtime”前的复选框,如下图2所示。下面的VBA代码从数据单元格区域中生成唯一数据。它将从数组的当前区域获取数据,并将数据汇总到一个唯一值列表中,输出到所选择的单元格区域内。 ar = [A1].CurrentRegion.Value With
CreateObject('Scripting.Dictionary') .Item(ar(i, 1)) = .Item(ar(i, 1)) +
ar(i, 3) ar = Array(.keys, .items) Sheet3.[A1].Resize(.Count, 2) =
Application.Transpose(ar)将单元格区域推送到一个名为(ar)的数组中,该数组存储所有数据。然后,一个简单的For循环遍历数组中的数据。.Item行允许引用数组(ar),并将唯一数据放入字典中。.Item(ar(i,
1)) = .Item(ar(i, 1)) + ar(i, 3)当循环完成后,所要做的就是将数据从字典中提取到想要的位置。ar
= Array(.keys, .items)最后,将输出数据的单元格区域调整为与保存字典的数组相同的大小。Sheet3.[A1].Resize(.Count,
2) = Application.Transpose(ar)这里将数据输出工作表Sheet3的单元格A1,并从该起始点调整区域大小。如果想要输出不同列的唯一值,可以使用代码。例如,将第1列:.Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 3).Item(ar(i, 2))
= .Item(ar(i, 2)) + ar(i, 3)注:本文学习整理自thesmallman.com,有兴趣的朋友可以到原网站学习。或者到知识星球App完美Excel社群下载本文示例工作簿。欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。
|