Vba: คัดลอกแถวไปยังแผ่นงานอื่นตามเกณฑ์


คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อคัดลอกแต่ละแถวในชีตที่ตรงตามเกณฑ์เฉพาะไปยังชีตอื่น:

 Sub CopyToAnotherSheet()

   Dim LastRow As Long

  'Find last used row in a Column A of Sheet1
   With Worksheets(" Sheet1 ")
      LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
   End With

   'Find first row where values should be posted in Sheet2
   With Worksheets(" Sheet2 ")
      j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
   End With
   
   'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
   For i = 1 TB LastRow
       With Worksheets(" Sheet1 ")
           If .Cells(i, 1).Value = "Mavs" Then
               .Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
               j = j + 1
           End If
       End With
   Next i
   
End Sub

มาโครนี้จะคัดลอกแต่ละแถวของ Sheet1 โดยที่คอลัมน์ A เท่ากับ “Mavs” และวางแต่ละแถวเหล่านั้นลงในแถวถัดไปที่มีอยู่ของ Sheet2

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: คัดลอกแถวไปยังแผ่นงานอื่นตามเกณฑ์โดยใช้ VBA

สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน แผ่นที่ 1 ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:

และสมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน Sheet2 :

โปรดทราบว่า Sheet2 มีเฉพาะข้อมูลเกี่ยวกับผู้เล่นในทีม Warriors เท่านั้น

สมมติว่าเราต้องการคัดลอกแต่ละแถวจาก Sheet1 โดยที่คอลัมน์ Team เท่ากับ Mavs และวางแต่ละแถวเหล่านั้นลงในแถวถัดไปที่มีอยู่ของ Sheet2

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 Sub CopyToAnotherSheet()

   Dim LastRow As Long

  'Find last used row in a Column A of Sheet1
   With Worksheets(" Sheet1 ")
      LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
   End With

   'Find first row where values should be posted in Sheet2
   With Worksheets(" Sheet2 ")
      j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
   End With
   
   'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
   For i = 1 TB LastRow
       With Worksheets(" Sheet1 ")
           If .Cells(i, 1).Value = "Mavs" Then
               .Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
               j = j + 1
           End If
       End With
   Next i
   
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้ใน Sheet2 :

โปรดทราบว่าแต่ละแถวใน Sheet1 ซึ่งชื่อทีมเท่ากับ Mavs จะถูกวางลงในแถวถัดไปที่มีอยู่ใน Sheet2

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับวิธี การคัดลอก VBA ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีค้นหาบรรทัดที่ใช้ล่าสุด
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีนับจำนวนคอลัมน์ที่ใช้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *