字典(Dictionary)是一種通過鍵(key)和項(item)(注:鍵和項是字典中的術(shù)語)存儲唯一項的方法。它是一種基于唯一鍵存儲數(shù)據(jù)的極好工具,它的強大之處在于可以使用鍵來存儲和合并數(shù)據(jù)。在本文中,講解如何在字典中捕獲一個單元格區(qū)域并將其引用回Excel。這里,將存儲一個10行的單元格區(qū)域,然后只輸出該區(qū)域中唯一的項目。示例如下圖1所示。獲取其數(shù)據(jù)區(qū)域,使用字典將數(shù)據(jù)存儲,然后使用VBA數(shù)組提取我們選擇需要獲取唯一值的列。設(shè)置字典非常簡單:可以直接創(chuàng)建字典對象,而無需引用Microsoft
Scripting Runtime。下面的代碼創(chuàng)建字典引用:With
CreateObject('Scripting.Dictionary')另一種方式是,在VBE中單擊“工具-引用”命令,在“引用”對話框中,勾選“Microsoft
Scripting Runtime”前的復(fù)選框,如下圖2所示。下面的VBA代碼從數(shù)據(jù)單元格區(qū)域中生成唯一數(shù)據(jù)。它將從數(shù)組的當前區(qū)域獲取數(shù)據(jù),并將數(shù)據(jù)匯總到一個唯一值列表中,輸出到所選擇的單元格區(qū)域內(nèi)。 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)將單元格區(qū)域推送到一個名為(ar)的數(shù)組中,該數(shù)組存儲所有數(shù)據(jù)。然后,一個簡單的For循環(huán)遍歷數(shù)組中的數(shù)據(jù)。.Item行允許引用數(shù)組(ar),并將唯一數(shù)據(jù)放入字典中。.Item(ar(i,
1)) = .Item(ar(i, 1)) + ar(i, 3)當循環(huán)完成后,所要做的就是將數(shù)據(jù)從字典中提取到想要的位置。使用以下代碼將數(shù)據(jù)返回數(shù)組:ar
= Array(.keys, .items)最后,將輸出數(shù)據(jù)的單元格區(qū)域調(diào)整為與保存字典的數(shù)組相同的大小。Sheet3.[A1].Resize(.Count,
2) = Application.Transpose(ar)這里將數(shù)據(jù)輸出工作表Sheet3的單元格A1,并從該起始點調(diào)整區(qū)域大小。如果想要輸出不同列的唯一值,可以使用代碼。例如,將第1列:.Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 3).Item(ar(i, 2))
= .Item(ar(i, 2)) + ar(i, 3)注:本文學(xué)習整理自thesmallman.com,有興趣的朋友可以到原網(wǎng)站學(xué)習?;蛘叩街R星球App完美Excel社群下載本文示例工作簿。歡迎到知識星球:完美Excel社群,進行技術(shù)交流和提問,獲取更多電子資料,并通過社群加入專門的微信討論群,更方便交流。
|