WorksheetFunction.Match用于临时工作表问题

时间:2013-10-30 13:34:58

标签: excel vba excel-vba worksheet-function

我在临时工作簿中使用WorksheetFunction.Match

Dimen = WorksheetFunction.Match(sum.Range("A15"), temp.Sheets(1).Range("A1:A200"))
colNum = WorksheetFunction.Match(sum.Range("A15"), temp.Sheets(1).Range("32:32"))

Dimen1 = WorksheetFunction.Match(sum.Range("A16"), temp.Sheets(1).Range("A1:A200"))
colNum1 = WorksheetFunction.Match(sum.Range("A16"), temp.Sheets(1).Range("33:33"))

Dimen2 = WorksheetFunction.Match(sum.Range("A17"), temp.Sheets(1).Range("A1:A200"))
colNum2 = WorksheetFunction.Match(sum.Range("A17"), temp.Sheets(1).Range("34:34"))

Dimen3 = WorksheetFunction.Match(sum.Range("A18"), temp.Sheets(1).Range("A1:A200"))
 colNum3 = WorksheetFunction.Match(sum.Range("A18"), temp.Sheets(1).Range("35:35"))

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:200"))
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("36:36"))

最后两行:

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:200")) 
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("36:36"))

它出现了1004错误,我不知道该错误的原因以及如何解决它?

3 个答案:

答案 0 :(得分:1)

尝试

Dimen4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A1:A200")) 
colNum4 = WorksheetFunction.Match(sum.Range("A19"), temp.Sheets(1).Range("A36").EntireRow)

并且可能会在所有行中更改它。我猜到它会失败..

原因是:

  • Range("A1:200")语法无效

正如DG在下面的评论中指出的那样,Range("1:1").Address确实有效,但它完全无效!

答案 1 :(得分:0)

这是Match函数找不到匹配项时发生的错误。由于您没有向Match提供第三个参数,问题可能是:a)您搜索范围内的值未按升序排序,和/或b)您的值'重新搜索的内容少于您搜索范围内的所有值。

答案 2 :(得分:0)

试试这个:

Dim Result As Variant
If Not VBA.IsError(Application.Match(...)) Then
    Result = Application.Match(...)
End If

这会尝试匹配,如果函数出错,则不会分配结果。

WorksheetFunction.Match Method (Excel)