返回列表 上一主題 發帖

[發問] vlookup速度慢,使用vba取代的程式碼

[發問] vlookup速度慢,使用vba取代的程式碼

當遇到資料量十幾萬筆的情況下,使用vlookup函數速度會很慢
詢問google大師有這麼一段程式碼
但是試著套,會出現溢位的錯誤,請問是否能幫忙修改程式碼,謝謝!

5.jpg
2018-6-15 14:49

ss.jpg
2018-6-15 14:47

取代Vlookup.tar (318 KB)

try
dim i as Variant, r as Variant

TOP

回復 2# ikboy

ikboy 你好:

請問是直接加入這句程式碼嗎?

TOP

更改 dim i %, r% 為 dim i as Variant, r as Variant

TOP

回復 1# chiang0320

試試看
  1. Option Explicit
  2. 'Option Explicit 為 在模組層次中強迫每個在模組堛瘍僂くㄔ眸楨確的宣告。
  3. '這是編寫程式易於偵錯的好習慣
  4. Sub Ex()
  5.     Dim d As Object, E As Range, Ar(), T As Date
  6.     T = Time
  7.     Debug.Print "程式開始時間 : " & T   '指令->檢視->即時運算視窗 :  查看程式起始時間
  8.     'Dim i%= i As Integer
  9.     'Integer 資料型態 Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存。Integer 的型態宣告字元是百分比符號(%
  10.     '********** 不會溢位  ***********
  11.     Dim i As Long  '= i&
  12.     'Long 資料型態
  13.     'Long (長整數)變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組) 有號數字形式儲存。Long 的型態宣告字元為 &。 '

  14.     Set d = CreateObject("scripting.dictionary")  '字典物件
  15.     With Sheets("p10")
  16.         For Each E In .Range(.[a1], .[a1].End(xlDown))
  17.             d(E.Value) = Array(E.Offset(, 2), E.Offset(, 3))
  18.             'e.Value > 字典物件的關鍵字(key) 導入 Array(e.Offset(, 2), e.Offset(, 3))
  19.         Next
  20.     End With
  21.     With Sheets("q72").Range(Sheets("q72").[B2], Sheets("q72").[B2].End(xlDown)).Resize(, 4)
  22.         Ar = .Value
  23.         For i = 1 To UBound(Ar)
  24.             If d.exists(Ar(i, 1)) Then
  25.             'Exists 方法 如果在 Dictionary 物件中指定的關鍵字存在,傳回 True,若不存在,傳回 False。
  26.                 Ar(i, 3) = d(Ar(i, 1))(0)
  27.                 Ar(i, 4) = d(Ar(i, 1))(1)
  28.             Else
  29.                 Ar(i, 3) = "無資料"
  30.                 Ar(i, 4) = "無資料"
  31.             End If
  32.         Next
  33.         .Value = Ar
  34.     End With
  35.     Debug.Print "程式結束時間 : " & Time, Application.Text(Time - T, "共計[S]秒")
  36.     '指令->檢視->即時運算視窗 :  查看程式運行速度
  37. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題