Excel 如果与复制列B匹配,则在另一个(整个)工作表中查找单元格值

Excel 如果与复制列B匹配,则在另一个(整个)工作表中查找单元格值,excel,vba,Excel,Vba,我有两张床单。Sheet1包含文本之间带有数字的导出电子邮件。表2包含我在表1中查找的编号。 我尝试在整个Sheet1中搜索Sheet2中的A列值。如果它的马赫数在第行的某个地方,我想将B列的值复制到第2页“B”。 我在Sheet1中有下面的代码find Sheet2 Column A values并高亮显示它,还可以从Column B中查找值,但它仅在我查找的值放在它旁边时才起作用。我需要您的帮助来更改代码,以便始终从B列复制值(日期) , 预期: 非常感谢你的帮助 Sub find()

我有两张床单。Sheet1包含文本之间带有数字的导出电子邮件。表2包含我在表1中查找的编号。 我尝试在整个Sheet1中搜索Sheet2中的A列值。如果它的马赫数在第行的某个地方,我想将B列的值复制到第2页“B”。 我在Sheet1中有下面的代码find Sheet2 Column A values并高亮显示它,还可以从Column B中查找值,但它仅在我查找的值放在它旁边时才起作用。我需要您的帮助来更改代码,以便始终从B列复制值(日期)

,

预期:

非常感谢你的帮助

Sub find()
Dim lastRow As Integer
Dim rng As Range

lastRow = Sheets("Sheet2").Range("A65000").End(xlUp).Row   

For i = 1 To lastRow
Set rng = Sheets("Sheet1").Range("A:L").find(Sheets("Sheet2").Cells(i, 1))

If Not rng Is Nothing Then Sheets("Sheet2").Cells(i,1).Cells.Interior.Color = vbGreen
Sheets("Sheet1").Range(rng(, 2), rng(, 2)).Copy Destination:=Sheets("Sheet2").Range("B" & i)        
End If 
Next 
End Sub

下面是您正在寻找的经过精确更正的代码,接下来是一个稍微改进的总体方法,可能会给您一些想法。考虑到您不熟悉
属性,对于VBA新手来说,您做了一件非常出色的工作。坚持下去。。。很好的第一篇文章

Sub find()
Dim lastRow As Integer
Dim rng As Range

lastRow = Sheets("Sheet2").Range("A65000").End(xlUp).Row

For i = 1 To lastRow
Set rng = Sheets("Sheet1").Range("A:L").find(Sheets("Sheet2").Cells(i, 1))

If Not rng Is Nothing Then
    Sheets("Sheet2").Cells(i, 1).Cells.Interior.Color = vbGreen
    Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(rng.Row, 2).Value

End If
Next
End Sub
需要考虑的一些想法:

Sub alternateWays()
Dim lastRow As Integer, i As Long, aCell As Range
Dim rng As Range, ws1 As Worksheet, ws2 As Worksheet

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("sheet2")
Set aCell = ws2.Range("A1")

Do While Not IsEmpty(aCell)
    Set rng = ws1.Range("A:L").find(aCell.Value)

    If Not rng Is Nothing Then
        aCell.Cells.Interior.Color = vbGreen
        aCell.Offset(, 1).Value = ws1.Cells(rng.Row, 2).Value
    End If


    Set aCell = aCell.Offset(1, 0) 'don't forget this....
Loop

End Sub

下面是您正在寻找的经过精确更正的代码,接下来是一个稍微改进的总体方法,可能会给您一些想法。考虑到您不熟悉
属性,对于VBA新手来说,您做了一件非常出色的工作。坚持下去。。。很好的第一篇文章

Sub find()
Dim lastRow As Integer
Dim rng As Range

lastRow = Sheets("Sheet2").Range("A65000").End(xlUp).Row

For i = 1 To lastRow
Set rng = Sheets("Sheet1").Range("A:L").find(Sheets("Sheet2").Cells(i, 1))

If Not rng Is Nothing Then
    Sheets("Sheet2").Cells(i, 1).Cells.Interior.Color = vbGreen
    Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(rng.Row, 2).Value

End If
Next
End Sub
需要考虑的一些想法:

Sub alternateWays()
Dim lastRow As Integer, i As Long, aCell As Range
Dim rng As Range, ws1 As Worksheet, ws2 As Worksheet

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("sheet2")
Set aCell = ws2.Range("A1")

Do While Not IsEmpty(aCell)
    Set rng = ws1.Range("A:L").find(aCell.Value)

    If Not rng Is Nothing Then
        aCell.Cells.Interior.Color = vbGreen
        aCell.Offset(, 1).Value = ws1.Cells(rng.Row, 2).Value
    End If


    Set aCell = aCell.Offset(1, 0) 'don't forget this....
Loop

End Sub

使用
表格(“Sheet1”).单元格(rng.Row,2)
表格(“Sheet1”).范围(“B”和rng.Row)
。使用
表格(“Sheet1”).单元格(rng.Row,2)
,或
表格(“Sheet1”).范围(“B”和rng.Row)
。非常感谢您的帮助和感谢的话语!想法真的很有教育意义!当然,代码工作得非常完美。再次感谢。非常感谢你的帮助和感谢之词!想法真的很有教育意义!当然,代码工作得非常完美。再次感谢。