[英]Copy rows from Target sheet to oter sheets based on cell values
我在(vba查找)問題上遇到了一些困難。
我有一個工作表(sheet3),其中有多行不同發票的數據(每行數據都包括與之相關的發票編號) 數據表
我已將唯一的發票號復制到單獨的工作表中,每個發票都有自己的工作表,並且發票號在單元格B1中。 發票表
我要做的是將數據表中的所有行復制到具有匹配發票編號的表中。
我當前代碼的全部內容就是我的單獨發票頁面鏈接,而不是使用Vba來創建它們,因為頁面上還會有其他各種格式和格式,所以我幾乎從零開始就開始了!
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
您的幫助將不勝感激
謝謝
在您的VBA宏中,在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中設置標題行。 如果可以解決您的問題,請標記為正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.