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

分享

【分享】DLOOKUP聽說(shuō)過(guò)嗎?VLOOKUP和它賽跑被甩了幾條街

 L羅樂(lè) 2018-03-31

說(shuō)起VLOOKUP大家都不陌生,但你有沒有試過(guò)用VLOOKUP一次處理超過(guò)幾十萬(wàn)條記錄呢?年底了負(fù)責(zé)做成本分析的同事求助,用VLOOKUP處理大量數(shù)據(jù)的時(shí)候需要等待很長(zhǎng)時(shí)間甚至Excel會(huì)直接卡死,有沒有更高效的方法呢?

下面向大家介紹使用字典對(duì)象應(yīng)對(duì)VLOOKUP處理大量數(shù)據(jù)時(shí)力不從心的問(wèn)題。

1、假設(shè)有兩個(gè)表格:表2存放訂單號(hào)及部門、類型、金額、日期、負(fù)責(zé)人、完成狀態(tài)等相關(guān)信息,共100萬(wàn)條記錄;表1存放待查找的訂單號(hào)及金額、完成狀態(tài)信息,共50萬(wàn)條記錄。


2、按Alt F11快捷鍵,進(jìn)入VBA編輯窗口,插入一個(gè)模塊,寫入以下代碼:

Sub DLOOKUP()   

   Dim dic As Object

   Dim arr, brr

   Dim acol As Long, bcol As Long

   Dim itm

   Dim crr() As Long

   Set dic = CreateObject('Scripting.Dictionary')

   arr = Sheet1.Range('A1').CurrentRegion

   brr = Sheet2.Range('A1').CurrentRegion

   acol = Sheet1.Range('A1').CurrentRegion.Columns.Count

   bcol = Sheet2.Range('A1').CurrentRegion.Columns.Count

   ReDim crr(2 To acol) '重定義為與表1的列一致

       For i = 2 To acol

       For j = 2 To bcol

           If arr(1, i) = brr(1, j) Then crr(i) = j

       Next

   Next           

   For i = 2 To UBound(brr)

       dic(brr(i, 1)) = i

   Next   

   For i = 2 To UBound(arr)

       itm = dic(arr(i, 1))

       If itm <> '' Then

           For j = 2 To acol

               arr(i, j) = brr(itm, crr(j))

           Next

       End If

   Next

    Sheet1.Range('A1').Resize(UBound(arr), acol) = arr

Set dic = Nothing

End Sub


3、運(yùn)行宏DLOOKUP(),1-2分鐘后,結(jié)果就在表1中顯示出來(lái)了。

以后只需要在表2中存放數(shù)據(jù)源(關(guān)鍵字放第1列),在表1中存放待查找的關(guān)鍵字(關(guān)鍵字放第1列)和需要引用的字段名,然后運(yùn)行下DLOOKUP()就可以了。


字典概念和基本用法:

字典(Dictionary)是腳本語(yǔ)言(Scripting)中提供的一個(gè)對(duì)象,通過(guò)建立字典可以實(shí)現(xiàn)高效的數(shù)據(jù)查詢。

用法1:Dictionary(Key)=Item

在字典(Dictionary)中為關(guān)鍵字(Key)和條目(Item)建立對(duì)應(yīng)關(guān)系。

用法2:Item=Dictionary(Key)

在字典(Dictionary)中查找關(guān)鍵字(Key)對(duì)應(yīng)的條目(Item)。


上文的DLOOKUP()首先建立了一個(gè)字典對(duì)象dic,用arr和brr分別保存表1和表2的數(shù)據(jù),找出表1所要引用的字段名在表2中對(duì)應(yīng)的列號(hào);然后在字典中為表2的訂單號(hào)和行號(hào)建立對(duì)應(yīng)關(guān)系,在字典中查找表1的訂單號(hào)得到對(duì)應(yīng)的行號(hào);最后根據(jù)行號(hào)和列號(hào)將表2中對(duì)應(yīng)的數(shù)據(jù)寫到表1中。

字典對(duì)象還有Key、Item等屬性和Add、Remove、Exists等方法,除了實(shí)現(xiàn)查找和引用,還可以實(shí)現(xiàn)去重、替換、排序等各種功能,而且效率很高。

作者:水長(zhǎng)川

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(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)論公約

    類似文章 更多