vba如何快速省時的實現vlookup的效果,vba中如何實現vlookup省時匹配?

時間 2021-05-05 16:45:07

1樓:深木

Sub 搞事情()

t = Timer

Dim i, j, k, m

Dim arr()

Dim arr2

Dim Rng As Object, S2 As Object

Dim R2, R3 As Long

'清除原訂單狀態

Set S2 = Sheet2

R2 = S2.UsedRange.Rows.Count

For i = 20 To 83 Step 9

If Rng Is Nothing Then

Set Rng = S2.Range(S2.Cells(2, i), S2.Cells(R2, i))

Else

Set Rng = Union(Rng, S2.Range(S2.Cells(2, i), S2.Cells(R2, i)))

End If

Next

Rng.ClearContents

Set d = CreateObject("scripting.dictionary") '建立字典

Sheet6.Select

arr() = Sheet6.Range("a1:b" & Sheet6.Range("a1048576").End(xlUp).Row)

For i = 1 To Sheet6.Range("a1048576").End(xlUp).Row

d(arr(i, 1)) = arr(i, 2)

Next

R2 = Sheet2.UsedRange.Rows.Count

R3 = Sheet3.UsedRange.Rows.Count

k = 0

Sheet2.Select '匹配年度

For m = 1 To 8

arr2 = Range(Cells(1, 19 + k), Cells(R2, 19 + k)).Value

ReDim arr3(2 To R2, 1 To 1)

For j = 2 To R2

If d.exists(arr2(j, 1)) Then '提出字典中內容,進行比對

arr3(j, 1) = d(arr2(j, 1))

End If

Next

Cells(2, 20 + k).Resize(R2 - 1, 1).Value = arr3()

k = k + 9

Next

Sheet3.Select '匹配結轉

Sheet3.Range("p1:p" & Sheet3.Range("g1048576").End(xlUp).Row).ClearContents

Sheet3.Range("h1:h" & Sheet3.

Range("g1048576").End(xlUp).Row).

Copy Sheet3.Range("p1")

Sheet3.Range("h1:h" & Sheet3.Range("g1048576").End(xlUp).Row).ClearContents

Sheet3.Range("h1") = Sheet6.Name

arr2 = Range(Cells(1, 7), Cells(R3, 7)).Value

ReDim arr3(2 To R3, 1 To 1)

For j = 2 To R3

If d.exists(arr2(j, 1)) Then '提出字典中內容,進行比對

arr3(j, 1) = d(arr2(j, 1))

End If

Next

Cells(2, 8).Resize(R3 - 1, 1).Value = arr3

MsgBox Format(Timer - t, "0.000000")

End Sub

2樓:

方法一:在vba中使用vlookup公式,第乙個引數值改為vba中的單元格表示形式(range形式),第二個引數改為vba中單元格區域表示形式(range形式)即可

方法二:使用ado,用sql中的right join匹配兩次即可

如何通過VBA來實現在excel中將每個sheet中存在括號的列標紅的功能呢?

老鷹 這是熱力圖的,可以除錯後使用 Sub tianse For i 182 To 188 Picture name Sheets Sheet1 Range O i Value Picture value Sheets Sheet1 Range P i If Picture value 0 Then...

大神們,如何利用VBA實現下面效果

辦公技巧雜談 這是個典型的資料對比問題,而不是簡單的檔案合併因為有對應關係。vlookup 效率很低我有軟體可以對比效率極高點幾下滑鼠就完成了支援幾十萬級別的資料秒速出結果 SubConsolidate Setd1 CreateObject Scripting.Dictionary 存放類別 Set...

如何省時省力省錢地快速積累飛行里程?

鹽選推薦 世界上有三大航司聯盟 星空聯盟,天合聯盟和寰宇一家,星空聯盟的主要成員有國航,全日空,美聯航,漢莎,新加坡航空紐西蘭航空,天合聯盟主要有東航,南航,達美,法航,俄航,寰宇一家規模比較小但精品,主要有國泰,美國航,日航,英航,馬航,卡航。國泰起頭的另乙個計畫叫亞洲萬里通也很值得學習研究。還有...