VBA中的VLOOKUP

Sub 優(yōu)化()
t = Timer
Dim i, j, k, m
Dim arr()
Dim arr2
Dim Rng As Object, S2 As Object
Dim R2, R3 As Long
Application.ScreenUpdating = False '停止更新屏幕
'清除原訂單狀態(tài)
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 '提出字典中內(nèi)容,進(jìn)行比對(duì)
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 '匹配結(jié)轉(zhuǎn)
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 '提出字典中內(nèi)容,進(jìn)行比對(duì)
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")
Application.ScreenUpdating = True '開(kāi)啟更新屏幕End Sub
End Sub

這是網(wǎng)絡(luò)大神優(yōu)化之前的


Sub 搞事情()
t = Timer
Dim i, j, k, m
Dim arr()

'清除原訂單狀態(tài)
Sheet2.Range("t2:t" & Sheet2.Range("t1048576").End(xlUp).Row).ClearContents
Sheet2.Range("ac2:ac" & Sheet2.Range("ac1048576").End(xlUp).Row).ClearContents
Sheet2.Range("al2:al" & Sheet2.Range("al1048576").End(xlUp).Row).ClearContents
Sheet2.Range("au2:au" & Sheet2.Range("au1048576").End(xlUp).Row).ClearContents
Sheet2.Range("bd2:bd" & Sheet2.Range("bd1048576").End(xlUp).Row).ClearContents
Sheet2.Range("bm2:bm" & Sheet2.Range("bm1048576").End(xlUp).Row).ClearContents
Sheet2.Range("bv2:bv" & Sheet2.Range("bv1048576").End(xlUp).Row).ClearContents
Sheet2.Range("ce2:ce" & Sheet2.Range("ce1048576").End(xlUp).Row).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

Sheet2.Select '匹配年度
For m = 1 To 8
    For j = 1 To Sheet2.Range("a1048576").End(xlUp).Row
    If d.exists(Cells(j, 19 + k).Value) Then '提出字典中內(nèi)容,進(jìn)行比對(duì)
    Cells(j, 20 + k) = d(Cells(j, 19 + k).Value)
    End If
    Next
    k = k + 9
Next

Sheet3.Select '匹配結(jié)轉(zhuǎn)
Sheet3.Range("p1:p" & Sheet2.Range("p1048576").End(xlUp).Row).ClearContents
Sheet3.Range("h1:h" & Sheet2.Range("p1048576").End(xlUp).Row).Copy Sheet3.Range("p1")
Sheet3.Range("h1:h" & Sheet2.Range("p1048576").End(xlUp).Row).ClearContents
Sheet3.Range("h1") = Sheet6.Name

For j = 1 To Sheet3.Range("g1048576").End(xlUp).Row
If d.exists(Cells(j, 7).Value) Then '提出字典中內(nèi)容,進(jìn)行比對(duì)
Cells(j, 8) = d(Cells(j, 7).Value)
End If
Next

MsgBox Format(Timer - t, "0.000000")
End Sub

來(lái)源網(wǎng)絡(luò),僅供學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字典 補(bǔ)充說(shuō)明 上面這段涉及到了數(shù)組、兩種循環(huán)方式,對(duì)初學(xué)者來(lái)說(shuō)還是比較難理解的,所以改了一個(gè)稍微簡(jiǎn)單一點(diǎn)的版本。...
    慕海生閱讀 1,324評(píng)論 0 0
  • 華為官方今日宣布,華為Mate 20 X 獲得中國(guó)首張5G終端電信設(shè)備進(jìn)網(wǎng)許可證,同時(shí)該機(jī)也是同時(shí)支持SA/NSA...
    IC全球購(gòu)閱讀 909評(píng)論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂愁,有人驚喜有人失落,有的覺(jué)得收獲滿滿有...
    陌忘宇閱讀 8,849評(píng)論 28 54
  • 人工智能是什么?什么是人工智能?人工智能是未來(lái)發(fā)展的必然趨勢(shì)嗎?以后人工智能技術(shù)真的能達(dá)到電影里機(jī)器人的智能水平嗎...
    ZLLZ閱讀 4,102評(píng)論 0 5
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時(shí)間,看過(guò)一些關(guān)于股票投資的書(shū)籍,對(duì)于巴菲特等股神的...
    瞎投資閱讀 5,944評(píng)論 3 8

友情鏈接更多精彩內(nèi)容