返回列表 上一主題 發帖

[發問] 請問有無可以取代VLOOKUP函數的VBA寫法...

回復 1# GGGYYY
試試看
  1. Option Explicit
  2. Sub Ex_Match() '大小寫沒有分別
  3.     Dim M As Variant, Rng As Range, E As Range
  4.     Set Rng = Sheets("對照").Range("A:A")
  5.     For Each E In Sheets("數值").UsedRange.Columns(1).Offset(1).Cells
  6.         M = Application.Match(E, Rng, 0)   '沒找到傳回錯誤值
  7.         If IsNumeric(M) Then               '找到傳回數字
  8.             Rng.Cells(M, 2).Resize(, 2).Copy E.Offset(, 1)
  9.         Else
  10.             With E.Cells(1, 2).Resize(, 2)
  11.                 .Value = ""
  12.                 .Interior.ColorIndex = xlNo
  13.             End With
  14.         End If
  15.     Next
  16. End Sub

  17. Sub Ex_字典物件() '大小寫有分別
  18.     Dim E As Range, d As Object, i As Integer
  19.     Set d = CreateObject("scripting.dictionary") '字典物件
  20.     i = 1
  21.     With Sheets("對照")
  22.         Do While .Cells(i, "a") <> ""
  23.             Set d(.Cells(i, "a").Value) = .Cells(i, "a").Offset(, 1).Resize(, 2)
  24.             i = i + 1
  25.         Loop
  26.     End With
  27.     For Each E In Sheets("數值").UsedRange.Columns(1).Offset(1).Cells
  28.         If d.EXISTS(E.Value) Then   'Dictionary 物件中指定的關鍵字存在,傳回 True,若不存在,傳回 False。
  29.             d(E.Value).Copy E.Offset(, 1)
  30.         Else
  31.             With E.Cells(1, 2).Resize(, 2)
  32.                 .Value = ""
  33.                 .Interior.ColorIndex = xlNo
  34.             End With
  35.         End If
  36.     Next
  37. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# pegawang
當 range1 Is Nothing   
MsgBox (range1.Address)  會出錯的
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題