Excel VBA:确定find值的行

我试图find其中的值的行号:

Set rep = Sheets("Details") For i = 2 To n If Sheets("Work").Range("A:A").Find(Worksheets("Work_report").Range("E" & i).Value, lookat:=xlWhole) Is Nothing Then Else: findrow = Sheets("Work_report").Range("E" & i).Find(Worksheets("Work").Range("A:A").Value, lookat:=xlWhole).Row o = rep.Range("A" & Rows.Count).End(xlUp).Row + 1 rep.Range("A" & o).Value = "FT_EXCEL" rep.Range("B" & o).Value = Sheets("Start").Range("C5") & "AB" & Format(o - 1, "00") rep.Range("C" & o).Value = Sheets("Work_report").Range("E" & findrow) End If Next i 

对于我想要使用“findrow”这一行,基本上需要findWork_Report中的行。 这只会被执行,如果从工作单元Work的工作报告find单元格的值,所以为了find行的数量,我试图倒置行,并find它在Work_Report,但是这给了我的错误 – 对象variables或未设置块variables。

谢谢!

我更喜欢MATCHfind单列search:

 Set rep = Sheets("Details") Dim test As Long For i = 2 To n test = 0 On Error Resume Next test = Application.WorksheetFunction.Match(Worksheets("Work_report").Range("E" & i).Value, Sheets("Work").Range("A:A"), 0) On Error GoTo 0 If test > 0 Then o = rep.Range("A" & Rows.Count).End(xlUp).Row + 1 rep.Range("A" & o).Value = "FT_EXCEL" rep.Range("B" & o).Value = Sheets("Start").Range("C5") & "AB" & Format(o - 1, "00") rep.Range("C" & o).Value = Sheets("Work_report").Range("E" & test) End If Next i 

使用AutoFilter()方法的运算符xlFilterValues值,可以一次完成

 Sub main() Dim rep As Worksheet Dim criteriaArr As Variant With Worksheets("Work_report") '<--| reference "Work_report" sheet criteriaArr = Application.Transpose(.Range("E2", .Cells(.Rows.Count, "E").End(xlUp)).Value) '<--| store its column E cells content from row 2 down to last not empty one End With Set rep = Sheets("Details") With Worksheets("Work") '<--| reference "Work" sheet With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)) '<--| reference its column A cells from row 1 (header) down to last not empty one .AutoFilter Field:=1, Criteria1:=criteriaArr, Operator:=xlFilterValues '<--| filter it with "Work_report" sheet column E content If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then '<--| if any filtered cells other then headers With .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) '<--| reference filtered cells skipping header rep.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(.Rows.Count).Value = "FT_EXCEL" '<--| write 'rep' sheet column A corresponding cells content With rep.Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(.Rows.Count) .Formula = "=CONCATENATE(Start!$C$5,""AB"",TEXT(ROW(),""00""))" '<--| '<--| write 'rep' sheet column B corresponding cells content .Value = .Value End With End With End If End With .AutoFilterMode = False End With End Sub