2017-03-17 69 views
2

我试图写一个宏,它将从sheet1复制到sheet3,如果它有sheet2的值的整个行。我想根据另一个表的值复制一行

例如,如果我有在Sheet和sheet2以下内容

Sheet 1  Sheet 2 
Name DOJ Name   
abc 123 def   
def 456 jkl   
ghi 789 
jkl 101 

然后我需要在工作表Sheet

Name DoJ 
def 456 
Jkl 101 
+1

请包括您“正在写入”的代码,并告诉我们什么不工作,然后我们将能够为您提供帮助。 (并可能解释为什么你不能只做一个VLOOKUP。) – YowE3K

+0

我认为我的编辑与你的编辑“相撞”,因此它拒绝了你的编辑。随意回滚过去我的编辑并重新申请你的,如果你想。 – YowE3K

回答

1

作为低于输出试试这个代码:

Sub Test() 

Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet 
Dim Sr As Long, Lr1 As Long, Lr2 As Long, Lr3 As Long 
Dim i As Long 
Dim Rng As Range, fRng As Range 

Set Sh1 = Sheets("sheet1") 
Set Sh2 = Sheets("sheet2") 
Set Sh3 = Sheets("sheet3") 

Sr = 2 
Lr1 = Sh1.Range("A" & Sh1.Rows.Count).End(xlUp).Row 
Lr2 = Sh2.Range("A" & Sh2.Rows.Count).End(xlUp).Row 
Lr3 = Sh3.Range("A" & Sh3.Rows.Count).End(xlUp).Row + 1 
Set Rng = Sh1.Range("A" & Sr & ":A" & Lr1) 

For i = Sr To Lr2 
    Set fRng = Rng.Find(Sh2.Range("A" & i).Value, , xlValues, xlWhole, xlByRows, xlNext) 
    If Not fRng Is Nothing Then 
    Sh3.Range("A" & Lr3 & ":B" & Lr3).Value = Sh1.Range("A" & fRng.Row & ":B" & fRng.Row).Value 
    Lr3 = Lr3 + 1 
    End If 
Next 

End Sub 
相关问题