返回列表 上一主題 發帖

"Vlookup" and "Match" in VBA

"Vlookup" and "Match" in VBA

我平常都會用很多"Vlookup" 跟 "Match",如果我想用VBA的方式寫出來,該怎麼做呢?
50 字節以內
不支持自定義 Discuz! 代碼

http://forum.twbts.com/viewthrea ... p;extra=&page=1
這裡有在vba中引用工作表函數的實例

TOP

謝謝回覆,可惜我權限不夠,不能下載,可以簡單的介紹一下嗎?
50 字節以內
不支持自定義 Discuz! 代碼

TOP

方法1:用application.引用公式
方法2.用evaluate+公式
方法3.用中刮號把公式框起來

TOP

謝謝,我試了...
x = Range("D" & z).Application.Formula = " [=MATCH(Sheets1!""ItemName"",Sheets2!A:A,0)]"
就是不行,可以告訴我,我錯在哪裡嗎?
謝謝~~!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

Range("d" & z) = Evaluate("MATCH(""ItemNam"",Sheet2!A:A,0)")

TOP

上述列出的方法你只能選一樣
不能每樣同時用,還加上錄製的代碼
前面"x="也不能加在裡面,哪能這麼多等號?

TOP

本帖最後由 am0251 於 2011-6-22 17:13 編輯

很奇怪,我試過:
ItemNam = Range("A" & z).Value
x = Application.WorksheetFunction.Match(""ItemNam"",, Sheets("OUT").Range("A:A"))
是不行的,只有不用變數"ItemNam"而直接把"Range("A" & z).Value"打進去才能用 Book1.rar (12.98 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

變數有變數的用法,跟字符是不同的表示。
變數不用雙引號。

TOP

嗯,上傳檔案就好辦了!
改這樣
  1. Sub test()

  2. Dim x As Integer
  3. Dim y As Integer
  4. Dim z As Integer
  5. Dim ItemName As String

  6. z = 2

  7. Do While Range("A" & z).Value <> ""

  8. ItemNam = Worksheets("Sheet1").Range("A" & z).Value

  9. x = Application.Match(ItemNam, Sheet2.[A1:A100], 0)

  10. Debug.Print x

  11. z = z + 1

  12. Loop

  13. End Sub
複製代碼

TOP

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題