根据单元格值将“目标”工作表中的行复制到其他工作表

(vba查找)问题,我有一些困难。

我有一张工作表(工作表3),其中有多行不同发票的数据(每一行数据包括它所涉及的发票号码) 数据表

我已将独特的发票号码复制到单独的工作表中,每张发票都有自己的工作表,发票号码在单元格B1中。 发票单

我想要做的是将数据表中的所有行复制到具有匹配发票号码的表单中。

所有我现有的代码是这是我的单独的发票页链接,而不是使用VBA来创build它们,因为在页面上会有各种其他格式和Formulrs,所以我几乎从头开始在我的问题!

Private Sub CommandButton1_Click() Dim s1 As Worksheet, s2 As Worksheet Set s1 = Sheets("sheet3") Set s2 = Sheets("Bill Date") s1.Range("F:G").Copy s2.Range("A:B") s2.Range("A:B").RemoveDuplicates Columns:=1, Header:=xlNo End Sub 

您的帮助将不胜感激

谢谢

在VBAmacros中,在for循环中执行以下操作:

 Sub copyData() Dim invNo As String Dim lastRow As Integer Dim sourceSht As Worksheet Dim targSht As Worksheet Set sourceSht = Worksheets("Sheet3") 'evaluates every data item from row 2 to last populated row For Row = 2 To sourceSht.Cells(sourceSht.Rows.Count, 1).End(xlUp).Row invNo = sourceSht.Range("F" & Row).Value 'if invNo blank, skip If invNo <> "" Then 'try to find the sheet, make if does not exist invNo = invNo & "_INV" On Error Resume Next Set targSht = Worksheets(invNo) If targSht Is Nothing Then Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = invNo Set targSht = Worksheets(invNo) 'SetHeader End If 'find first empty row in targSht lastRow = targSht.Cells(targSht.Rows.Count, 1).End(xlUp).Row + 1 'copy row of data sourceSht.Range("A" & Row & ":L" & Row).Copy targSht.Range("A" & lastRow & ":L" & lastRow).Select targSht.Paste 'must do to make more sheets Set targSht = Nothing End If Next End Sub 

我改变了一些你的规格,而采用更简单的方法。 我假设你给我看的十二个专栏是你所有的。 我将“_INV”添加到发票单的末尾,因为纯数字表名可能会导致错误。 我也将这一行数据逐字地粘贴到新的表格中。 如果您保留当前标题,则需要更改顺序。 您可以考虑更改您的targSht标题,以使其更容易。 SetHeader是一个代码块的占位符,可以在targSht中设置标题行。 请标记正确,如果这解决了您的问题。

演示(不含发票标题): 运行前 运行后