返回列表 上一主題 發帖

"Vlookup" and "Match" in VBA

本帖最後由 GBKEE 於 2011-6-23 13:46 編輯

回復 8# am0251
Sub test()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim ItemName As String
z = 2
Do While Range("A" & z).Value <> ""
'ItemNam = Worksheets("Sheets1").Range("A" & z).Value       '你的附檔中沒有Sheets1工作表
'x = Evaluate("MATCH(""ItemNam"",Sheet(Sheets2)!A:A,0)")    你的附檔中沒有Sheets2工作表
'x = Application.WorksheetFunction.Match(Worksheets("Sheets1").Range("A" & z).Value, Sheets("Sheets2").Range("A:A")) '如上的錯誤
ItemNam = Worksheets("Sheet1").Range("A" & z).Value
x = Evaluate("MATCH(""" & ItemNam & """,Sheet2!A:A,0)")   'ItemNam是變數要用&來連接
x = Application.WorksheetFunction.Match(Worksheets("Sheet1").Range("A" & z).Value, Sheets("Sheet2").Range("A:A"))
Debug.Print x, y
z = z + 1
Loop
End Sub

TOP

回復 28# Happkkevin
  1. Public Function VLMatch(tt$, KK$, NN$, DALL As Range, dt As Range) As String
  2.     'Match  找到值則傳回數字,沒找到值則傳回錯誤值
  3.     'VLookup   找到傳回字串,沒找到傳回錯誤值
  4.     Dim i As Variant, j As Variant  '變數需設定為Variant資料型態
  5.     'Variant資料型態是所有沒被明確宣告為任一其他型態
  6.     i = Application.Match(KK, dt, 0)  'vba中使用工作表函數->  Application.工作表函數
  7.     '請看vba中可使用的工作表函數
  8.     j = Application.VLookup(tt, DALL, i, 0)
  9.     '***   Evaluate("VLookup(tt, DALL, i, 0)")=[VLookup(tt, DALL, i, 0)]
  10.     '不接受變數 tt, DALL, i   ***
  11.     If IsError(j) Then   'j傳回錯誤值
  12.         VLMatch = NN
  13.     Else:    'j傳回字串
  14.         If j = "" Then VLMatch = NN Else VLMatch = j
  15.     End If
  16. End Function
複製代碼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題