Vba: วิธีลบแถวตามค่าของเซลล์
คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อลบแถวตามค่าของเซลล์:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
แมโครนี้จะลบแถวทั้งหมดในช่วง A1:C10 โดยที่ค่าของคอลัมน์ B เท่ากับ “Is”
แมโครนี้ใช้ขั้นตอนต่อไปนี้:
- ใช้ตัวกรองกับ A1:C10 เพื่อแสดงเฉพาะแถวที่มีค่าในคอลัมน์ B คือ “Is”
- จากนั้นลบเซลล์ที่มองเห็นทั้งหมด
- จากนั้นจึงถอดตัวกรองออก
ซึ่งมีผลกับการลบแถวทั้งหมดในช่วง A1:C10 โดยที่ค่าในคอลัมน์ B เท่ากับ “Is”
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: ใช้ VBA เพื่อลบแถวตามค่าของเซลล์
สมมติว่าเรามีชุดข้อมูลต่อไปนี้ที่มีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
สมมติว่าเราต้องการลบทุกแถวออกจากชุดข้อมูลที่คอลัมน์ Conference เท่ากับ “East”
เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
โปรดทราบว่าแถวทั้งหมดที่มีค่าในคอลัมน์ Conference เป็น “East” ได้ถูกลบไปแล้ว
หมายเหตุ : บรรทัด Application.DisplayAlerts=False จะบอก VBA ว่าอย่าแสดงกระบวนการลบเส้นที่มองเห็นได้ ซึ่งจะทำให้กระบวนการเร็วขึ้น
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีใช้การจัดรูปแบบตามเงื่อนไขกับเซลล์
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีนับเซลล์ด้วยข้อความเฉพาะ