根据单元格值将特定数据(不是整行!)复制到另一个工作表

时间:2017-01-13 04:09:31

标签: vba excel-vba excel

我正在尝试根据匹配将单元数据从一张纸复制到另一张。

我有一张3张工作簿。 “地方”,“可乐”和“HMS”。

在活动工作表“放置”上,如果列C14有“可乐”字样 - 我想将D14-H14复制到工作表“可乐”。

同样,如果C15包含“HMS” - 我只想将“D15-H15”复制到“HMS”表

我有一个复制整行的宏,我希望复制特定的单元格 - 来自特定的C:H。

Sub As_Of_Analysis_Sorting()
Dim lr As Long, lr2 As Long, r As Long
lr = Sheets("Place").Cells(Rows.Count, "A").End(xlUp).Row
lr2 = Sheets("Coke").Cells(Rows.Count, "A").End(xlUp).Row
lr3 = Sheets("HMS").Cells(Rows.Count, "A").End(xlUp).Row
For r = lr To 2 Step -1
    If Range("C" & r).Value = "Coke" Then
        Rows(r).Copy Destination:=Sheets("Coke").Range("A" & lr2 + 1)
        lr2 = Sheets("Coke").Cells(Rows.Count, "A").End(xlUp).Row
    End If
    If Range("C" & r).Value = "HMS" Then
        Rows(r).Copy Destination:=Sheets("HMS").Range("A" & lr3 + 1)
        lr3 = Sheets("HMS").Cells(Rows.Count, "A").End(xlUp).Row
    End If
    Range("A140").Select
Next r
End Sub

Hos我能做到吗?

1 个答案:

答案 0 :(得分:0)

首先是一个“良好做法”建议:始终告诉范围在哪张表中:

Range("C" & r).Value 
'becomes
Range("Place!C" & r).Value 
'or
sheets("Place").Range("C" & r).Value 

现在的答案是:代码就是你告诉它做的事情:

Rows(r).Copy Destination:=Sheets("Coke").Range("A" & lr2 + 1)

==>你复制整行并把它放在A.这就是取代整行 如果您不需要格式,您应该使用:

range("Coke!A" & lr2 +1 & ":F" & lr2 +1 ) = range("Place!C" & r & ":H" & r).value2

如果你需要格式(代码较慢):

range("Place!C" & r & ":H" & r).copy  Destination:=Sheets("Coke").Range("A" & lr2 + 1)