我试图通过将表格“表格”中输入的参考号码与“记录”栏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上的任何值相匹配?”因为我大部分时间遇到的都是返回整行 我真的很感激任何帮助。感谢
答案 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(“”)文本中连接它。
代码未经测试。