考虑到唯一的参考编号,将单元格中的单元格复制到另一页

时间:2013-12-04 16:50:55

标签: excel vba excel-vba copy

我试图通过将表格“表格”中输入的参考号码与“记录”栏B中的数字相匹配,从表格“记录”中提取数据。通过命令按钮单击,我能够得到下面的VB代码。但是,它只会从工作表“记录”列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

我想知道是否可以将工作表“记录”列HQ中的值复制到工作表“表格”列BK,如果工作表“表格”的单元格I13中的参考编号与工作表“记录”的列B上的任何值相匹配?”因为我大部分时间遇到的都是返回整行 我真的很感激任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

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

'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方法,也可以使用变量并在Range(“”)文本中连接它。

代码未经测试。