尝试使用MATCH vba excel

时间:2017-08-18 18:00:10

标签: excel vba excel-vba match

我正在尝试在列上获取值和行上的值。

我做了这个并且有效:

linha = Application.WorksheetFunction.Match(nome, Sheets(2).Range("a:a"), 0)

但如果我这样做,它就行不通。用作相同的代码(错误1004)

x = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Cells(1, 1), Cells(x, 1)), 0)

2 个答案:

答案 0 :(得分:1)

两件事:

如果在范围内找不到nome则会出错,所以我们需要一些错误处理。

您需要将父项添加到Range()中的Cells():

Dim linha2 As Long
Dim x As Long
linha2 = 0
x = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
    linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(x, 1)), 0)
On Error GoTo 0
If linha2 = 0 Then
    MsgBox nome & " not found in range"
Else
    'do what you want with linha2
End If

答案 1 :(得分:1)

这不起作用,因为如果使用Sheet引用限定Range对象,则还需要使用Sheet引用限定Cells。

尝试这样......

linha2 = Application.WorksheetFunction.Match(nome, Sheets(2).Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(x, 1)), 0)