tft每日頭條

 > 科技

 > vba取旁邊一列的數據

vba取旁邊一列的數據

科技 更新时间:2024-07-23 05:23:12
本例介紹用字典取兩列數據的相同項,如圖,A列為2018年500強名單,B列為2019年名單,要求取得這兩年連續上榜名單,也就是取兩列的相同項。

vba取旁邊一列的數據(取兩列數據的相同值)1

代碼:

Sub Ck()

Set d = CreateObject("Scripting.Dictionary")

arr1 = Range([A2], [A65536].End(xlUp))

arr2 = Range([B2], [B65536].End(xlUp))

For i = 1 To UBound(arr1)

d(arr1(i, 1)) = 0

Next

For j = 1 To UBound(arr2)

If d.exists(arr2(j, 1)) Then d(arr2(j, 1)) = 1

Next

For Each d1 In d.keys

If d(d1) = 0 Then d.Remove (d1)

Next

Range("C2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)

End Sub

結果如圖:

vba取旁邊一列的數據(取兩列數據的相同值)2

代碼解析:

arr1 = Range([A2], [A65536].End(xlUp)) ’建立數組,将A列相應的值放入數組放入arr1

arr2 = Range([B2], [B65536].End(xlUp)) ’建立數組,将B列相應的值放入數組放入arr2

For i = 1 To UBound(arr1)

d(arr1(i, 1)) = 0 ’将arr1的值寫入字典的key,其item值等于0

Next

For j = 1 To UBound(arr2)

If d.exists(arr2(j, 1)) Then d(arr2(j, 1)) = 1 ’如有B列的數值等于字典的key,那麼,将其對應key的item賦值為1

Next

For Each d1 In d.keys

If d(d1) = 0 Then d.Remove (d1) ‘删除字典中item為0的值,剩餘的為item為1的值,也就是獲得了兩列的重複項

Range("C2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)

‘轉置,在C列列出重複值。

vba取旁邊一列的數據(取兩列數據的相同值)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved