日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

示例講字典(Dictionary):獲取唯一值

 新用戶0118F7lQ 2022-06-17 發(fā)布于福建
excelperfect

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多