2013-12-07 67 views
3

因此,我試圖在VBA中創建一個函數,以便每當我在Excel中輸入特定參數給一個函數時,就會給出這些參數的結果。VBA中的工作表函數

例如,我有一列中的名稱列表;約翰,簡和喬伊......然後在另一列中,我得到了與這些名字重合的數字......這裏的目標是讓用戶在任何給定的單元格中鍵入一個名稱並具有電子表格輸出與該名稱一致的數字。

這是我得到的,但我已經死了,因爲我不知道該怎麼做。

Function NumberOfHits(Name As String) 
Dim Vegetable As String 
NumberOfHits = Application.WorksheetFunction.VLookup(Name, Sheets("Hits From Player").Range("B38:D74"), 3) 
End Function 

回答

6

此上下車叫Hits From Player一次

  1. 我做了功能性的(所以它更新)片工作正常,我都。您也可以將RAND()與此公式結合使用以獲得相同的效果。
  2. 你還記得在" "

    =NumberOfHits("mary")

到包圍名稱重新切割功能:

Function NumberOfHits(Name As String) 
    Application.Volatile 
    NumberOfHits = Application.WorksheetFunction.VLookup(Name, _ 
    Sheets("Hits From Player").Range("B38:D74"), 3) 
End Function 

更新:處理沒有精確匹配的嘗試

Function NumberOfHits(strName As String) As Variant 
Dim StrOut 

Application.Volatile 

On Error Resume Next 
StrOut = Application.WorksheetFunction.VLookup(strName, _ 
Sheets("Hits From Player").Range("B38:D74"), 3, False) 
On Error GoTo 0 

If IsEmpty(StrOut) Then 
    NumberOfHits = CVErr(xlErrNA) 
Else 
    NumberOfHits = StrOut 
End If 
End Function 
+1

+ 1對我也適用:) –

+1

+1雖然我會輸出一個錯誤值,如#N/A找不到匹配時,與Excel樣式一致:-) –

+0

@ Jean-FrançoisCorbett同意並相應更新 – brettdj