Vba 考虑到唯一的参考号,将行中的单元格复制到另一张图纸

Vba 考虑到唯一的参考号,将行中的单元格复制到另一张图纸,vba,excel,copy,Vba,Excel,Copy,我试图通过将表格中输入的参考编号与记录B列中的编号进行匹配,从表格记录中提取数据。我可以通过单击命令按钮来获得下面的VB代码。然而,它只会从sheet Record列i返回一个值,对每个值进行编码将非常耗时 Private Sub CommandButton1_Click() With Application.WorksheetFunction Sheets("Form").Range("b:b") = _ .Index(Sheets("Record").Range("h:h"),

我试图通过将表格中输入的参考编号与记录B列中的编号进行匹配,从表格记录中提取数据。我可以通过单击命令按钮来获得下面的VB代码。然而,它只会从sheet Record列i返回一个值,对每个值进行编码将非常耗时

Private Sub CommandButton1_Click()
With Application.WorksheetFunction
   Sheets("Form").Range("b:b") = _
   .Index(Sheets("Record").Range("h:h"), .Match(Sheets("Form").Range("i13"), Sheets("Record").Range("b:b"), 0), 1)

End With
End Sub
我想知道,如果表格表格I13单元格中的参考号与表格记录B列中的任何值匹配,是否可以将表格记录H-Q列中的值复制到表格表格B-K列中?因为我大部分时间遇到的是返回整行。
我真的很感激任何帮助。谢谢

这可能是暴力,但我认为最好的方法是像这样循环数据:

'Find the last row of data
Public Function Get_Last_Row_Find(ByVal rngToCheck As Range) As Long
    Dim rngLast As Range
    Set rngLast = rngToCheck.Find(what:="*", searchorder:=xlByRows, SearchDirection:=xlPrevious)
    If rngLast Is Nothing Then
        Get_Last_Row_Find = rngToCheck.Row
    Else
        Get_Last_Row_Find = rngLast.Row
    End If
    If Get_Last_Row_Find <= 1 Then
        Get_Last_Row_Find = 2
    End If
End Function

Public Sub CommandButton1_Click

x = Get_Last_Row_Find(Sheets("Record").Range("B:B")
for i = 1 to x
    if Sheets("Form").Range("I13").Value = Sheets("Record").Range("B:B").Offset(i-1,0).Value then 'match
        Worksheets("Record").Range("H"&i&":Q"&i).Copy _ 
destination:=Worksheets("Form").Range("B"&i&":K"&i)
next i
请注意偏移的两种方法:可以使用.Offset方法,也可以使用变量并在文本范围内连接它


代码未测试。

是否需要将其作为VBA解决方案?可以用公式轻松完成。是的。我实际上需要它在vb中。谢谢。但是,一行只需要该行的一部分。仅单元格b:g上的值示例