久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA字典真是妙啊,兩列查找不同項,,以前只能靠眼睛,,現(xiàn)在可以優(yōu)雅地寫代碼!

 EXCEL應用之家 2025-01-15 發(fā)布于上海


歡迎轉發(fā)和點一下“看”,,文末留言互動!

置頂公眾號或設為星標及時接收更新不迷路



小伙伴們好,,今天來聊一聊VBA的那些事兒。有時候我們會遇到下面這樣的場景:有兩列數(shù)據(jù),,要從數(shù)據(jù)量多的那一列中找出不存在于另一列的數(shù)據(jù),。就像今天要和大家分享的這道題目一樣:



這道題目,使用公式和VBA都可以處理,。今天主要介紹如何使用VBA來解決這道題目。

01

VBA字典方法

使用VBA字典方法,,就可以很輕松地解決問題,。

題目并不難,因此今天也借這道題目,,來檢驗一下代碼的運行速度,。



完整代碼如下:

























Sub test()    Dim arr, brr, mydic, i, d    Dim startTime As Double    Dim endTime As Double    Dim elapsedTime As Double    startTime = Timer    arr = Range("B3:B18")    brr = Range("D3:D6")    Set mydic = CreateObject("scripting.dictionary")    For i = 1 To UBound(arr)        mydic(arr(i, 1) & i) = arr(i, 1)    Next    For Each d In mydic.keys        For i = 1 To UBound(brr)            If mydic(d) = brr(i, 1) Then                mydic.Remove (d)            End If        Next    Next    [E3].Resize(mydic.Count, 1) = WorksheetFunction.Transpose(mydic.items)    endTime = Timer    elapsedTime = endTime - startTime    Debug.Print "執(zhí)行時間: " & elapsedTime & " 秒"End Sub

下面簡單介紹一下這段代碼,。





Set mydic = CreateObject("scripting.dictionary")For i = 1 To UBound(arr)    mydic(arr(i, 1) & i) = arr(i, 1)Next

創(chuàng)建字典,并且將B列數(shù)據(jù)裝入字典,。








For Each d In mydic.keys    For i = 1 To UBound(brr)        If mydic(d) = brr(i, 1) Then            mydic.Remove (d)        End If    NextNext

通過一個雙層循環(huán)來判斷D列中的數(shù)據(jù)是否在字典中存在,。實際上就是字典鍵值和D列中數(shù)據(jù)一一對比。有重復則刪除相應的鍵和鍵值,。


[E3].Resize(mydic.Count, 1) = WorksheetFunction.Transpose(mydic.items)

最后結果輸出,。

這段代碼還計算了代碼運行時間。這個其實也很簡單,,通過Timer函數(shù)來記錄代碼的開始時間和結束時間,,來計算運行時間。




-END-


我就知道你“在看”

推薦閱讀

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多