使用usedrange.find时出错

时间:2017-06-23 07:56:35

标签: excel vba excel-vba

我的工作簿包含两个工作表(第1页和第2页)

我想在第J列的第1页中查找ID,并且需要在第2页的第2页中查找相应的日期。

我希望将该日期打印在第1页的W栏中。

问题是,在少数情况下,我会收到我的评论部分,该部分位于表2的第L列,而不是日期。

表2中的列G完全填满。

任何人都可以建议我的代码或执行有什么问题。我只想要打印日期,如果没有,那么我不需要打印任何东西。

Sub lookup()

Dim totalrows As Long
Dim totalcolumn As Long
Dim rng As range
Dim rng1 As range
Dim i As Long

totalrows = ActiveSheet.UsedRange.Rows.Count

For i = 2 To totalrows

Sheets("Sheet1").Select

Set rng = Sheets("Sheet2").UsedRange.Find(Cells(i, 7).Value)

If Not rng Is Nothing Then

Cells(i, 23).Value = rng.Value

End If

Next i

End Sub

1 个答案:

答案 0 :(得分:0)

你必须在那里放置另一个Sheets("Sheet2")以获得正确的参考:

Sheets("Sheet2").UsedRange.Find(Sheets("Sheet2").Cells(i, 7).Value)

尝试使用With...End With语句。然后,您可以使用Point(“。”)来引用您在with语句中设置的工作表。

经过一些评论后,我认为这是你所需要的:

Sub lookup()
    Dim totalrows As Long
    Dim totalcolumn As Long
    Dim rng As String
    Dim i As Long

    With Sheets("Sheet1")
        totalrows = .Range(.Cells(1, 10), .Cells(1, 10).End(xlDown)).Rows.Count

        For i = 2 To totalrows
            With Sheets("Sheet2")
                rng = .UsedRange.Find(Sheets("Sheet1").Cells(i, 10).Value).Offset(0, -3).Value
            End With

            If rng <> "" Then
                .Cells(i, 23).Value = rng
            End If
        Next
    End With
End Sub

此代码从Sheet2中的单元格J2中查找ID。之后,它保存单元格3列的值(J - 3列是G列)。这是您要写入单元格W2的日期。直到列J为空的所有行的那个。 这是你想要的功能吗?