返回列表 上一主題 發帖

"Vlookup" and "Match" in VBA

看了上面的帖子,對於函數使用於VBA 還是一知半解
不知可否將常用的函數組合運用於 VBA 呈現,配合自定義函數使用
但應該是對於資料形態還不了解,再加上函數的寫法更是剛用
所以寫了一個應該是錯誤不少,改了數次都亂了譜
如附件,希望有先進可以協助一下看是否可行
函數組合為
=IF(ISNA(VLOOKUP($A2,設備清單!$A$1:$B$20,MATCH(D$1,設備清單!A$1:B$1,0),0)),"無設備資料",(VLOOKUP($A2,設備清單!$A$1:$B$20,MATCH(D$1,設備清單!A$1:B$1,0),0)))
希望呈現
=vlmatch($A2,E$1,無設備資料,設備清單!$A$1:$B$20,設備清單!$A$1:$B$1)
vlmatch 為自定義函數,只需輸入 $A2,E$1,無設備資料,設備清單!$A$1:$B$20,設備清單!$A$1:$B$1即可
改了數次,最後錯誤,寫了如下
  1. Public Function VLMatch(tt$, KK$, NN$, DALL As Range, dt As Range) As String

  2. Dim i%, j$, k As Boolean
  3. i = Evaluate("Match(kk, dt, 0)")
  4. j = Evaluate("VLookup(tt, DALL, i, 0)")
  5. k = Evaluate("IsNA(j)")
  6. If k = False Then
  7.   VLMatch = NN
  8.   Else
  9.   VLMatch = j
  10.   End If

  11. End Function
複製代碼
自定義函數 VLOOK+Match.rar (108.68 KB)

TOP

本帖最後由 Happkkevin 於 2011-7-17 12:00 編輯
回復  Happkkevin
GBKEE 發表於 2011-7-17 08:45


GBKEE 版大,真的是太厲害囉
每每我花了許久時間修正只要經過此處先進的指導
不只問題解決,更讓我學到許多
至於VBA可用函數之前我沒有確認只是 if 發生問題才處理
說明中 我的軟體關於 vlookup 與 match 沒有說明,但我想應該是與函數相同
感謝你的指導
修正為你的語法加上修正 NN輸入""即符合我的需求
=vlmatch($A2,E$1,"無設備資料",設備清單!$A$1:$B$20,設備清單!$A$1:$B$1)

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題