簡體   English   中英

VBA:無法獲取WorkSheetFunction類的Match屬性

[英]VBA : Unable to get the Match property of WorkSheetFunction class

我在“ ClaimAnalysis”工作表中有一個名稱列表,在“ Analysis”工作表中有這些名稱值的子集。 為了選擇在“ Analysis1”中具有值的名稱,我對“ ClaimAnalysis”列中的每個值使用了Index-Match函數(frow是“ ClaimAnalysis”中的總行數)。 我正在應用的公式可以在公式欄上手動運行,但是在VBA中會拋出“運行時錯誤”。

公式欄“ = INDEX(Analysis1!$ B $ 2:$ B $ 717,MATCH(ClaimAnalysis!A2,Analysis2!$ A $ 2:$ A $ 727,0))”

是的,可變的眉毛使我的范圍符合編輯欄中的期望

For x = 2 To frow - 1        
ThisWorkbook.Sheets("ClaimAnalysis").Cells(x, 2).Value = Application.WorksheetFunction.Index(Sheets("Analysis1").Range("B2").End(xlDown), Application.WorksheetFunction.Match(ThisWorkbook.Sheets("ClaimAnalysis").Cells(x, 1), Sheets("Analysis1").Range("A2").End(xlDown), 0))
Next x

乍一看,您似乎為MATCH提供了錯誤的參數。 您正在提供一個需要數組的單元格地址。 這可能是錯誤的來源。

MATCH函數中,更改以下內容:

Sheets("Analysis1").Range("A2").End(xlDown)
對此:
Sheets("Analysis1").Range(Range("A2"), Range("A2").End(xlUp))

另一個可能性是MATCH實際上找不到任何東西,這意味着它會返回錯誤。

此外,使用End(xlDown)會為您提供最低的單元格,而不是最后的單元格。 如果您正在尋找后者,那么End(xlUp)將是一個更好的選擇。

也許您可以嘗試以下代碼:

Dim ws As Worksheet
Dim matched As Variant
Set ws = ThisWorkbook.Worksheets("ClaimAnalysis")

For x = 2 To frow - 1
    matched = Application.Match(ws.Cells(x, 1), ws.Range(Range("A2"), Range("A2").End(xlUp)), 0)
    If Not IsError(matched) Then ws.Cells(x, 2).Value = Application.Index(ws.Range("B2").End(xlUp), matched, 0)
Next x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM