ในตัวอย่างที่โพสต์ถ้าสำหรับ Jane และ David ฉันสนใจเฉพาะแถวที่มี "ผลรวม" ในคอลัมน์ B ฉันจะลบแถวที่ไม่มี "รวม" ในคอลัมน์ B ได้อย่างไรฉันต้องการใช้ฟังก์ชันนี้กับ หลายแผ่นภายในเวิร์กบุ๊ก
ในตัวอย่างที่โพสต์ถ้าสำหรับ Jane และ David ฉันสนใจเฉพาะแถวที่มี "ผลรวม" ในคอลัมน์ B ฉันจะลบแถวที่ไม่มี "รวม" ในคอลัมน์ B ได้อย่างไรฉันต้องการใช้ฟังก์ชันนี้กับ หลายแผ่นภายในเวิร์กบุ๊ก
คำตอบ:
วิธีที่ง่ายที่สุดของคุณคือการเรียงลำดับตามค่าที่คุณต้องการและลบแถวทั้งหมดก่อนค่านั้นจากนั้นแถวทั้งหมดที่อยู่หลังแถวนั้นจะเหลือเฉพาะแถวที่มีค่าเท่านั้น
แน่นอนว่านี่คือ Excel คุณสามารถทำสิ่งนั้นได้แตกต่างกันเล็กน้อยเมื่อใช้งานมากขึ้น ตัวอย่างเช่นแทรกคอลัมน์ "ผู้ช่วยเหลือ" ในที่ ๆ สะดวก (อยู่ถัดจากคอลัมน์ที่คุณสนใจ) และเขียนการทดสอบ IF สำหรับค่าที่มี "" อย่างรวดเร็วหากไม่พบ จากนั้นคัดลอกหรือเติมทั้งคอลัมน์ด้วยสูตร (การทดสอบแต่ละเซลล์ของแถวนั้น) เรียงลำดับในคอลัมน์ผู้ช่วยและแถวทั้งหมดที่คุณต้องการลบอยู่ด้วยกันแทนที่จะเป็นสองกลุ่ม ตัวเลือกใดที่คุณเลือกได้ง่ายขึ้นในสถานการณ์และความชอบของคุณคือวิธีที่คุณจะไป
หากคุณต้องการแมโครเพื่อทำตามแนวคิดเดียวกัน ในแมโครเพียงทดสอบเซลล์แรกในคอลัมน์ที่คุณสนใจเพื่อหาค่าและหากไม่พบว่ามีแมโครลบแถวนั้นให้วนซ้ำจนกว่าคุณจะไปถึงจุดสิ้นสุดของข้อมูล หากไม่มีเซลล์ว่างในคอลัมน์นั้นคุณสามารถทดสอบความว่างและออกเมื่อพบ แต่ ... หากเซลล์ว่างเปล่าคุณจะต้องลองอย่างอื่น ความหลากหลายของสิ่งต่าง ๆ สามารถทำงานได้ขึ้นอยู่กับตารางและคุณสมบัติของเซลล์อื่น ๆ ของคุณ แต่คุณสามารถเริ่มต้นแมโครในเซลล์สุดท้ายที่เป็นไปได้โดยเลือกจากสมองของคุณและทำงานสูงขึ้น (รวมถึงการทดสอบหมายเลขแถวแต่ละตัว เวลาเพื่อให้คุณสามารถหยุดที่พูดแถว 2 ฉัน fyou มีส่วนหัวมากกว่าการลบแถวส่วนหัวของเราแล้ววนซ้ำอย่างถาวรในแถวแรก)
หรือรวมสอง เรียงลำดับข้อมูลในคอลัมน์นั้นในแมโครค้นหาการเกิดขึ้นครั้งแรกของค่าที่ต้องการลบแถวข้อมูลทั้งหมดข้างบนค่านั้นจากนั้นทดสอบจนกระทั่งความล้มเหลวแรกและลบแถวทั้งหมดในภายหลัง
มีหลายวิธี แนวทางของฉันจะเป็นแนวทางแรกสำหรับการทำงานของฉัน สำหรับสเปรดชีตที่ฉันมอบให้กับบุคคลอื่นให้ใช้ฉันต้องการแก้ไขโดยพยายามทำให้เขาเป็นอัตโนมัติ หรือ ... ขึ้นอยู่กับผู้ใช้ความรู้กับมือใหม่เจ้านายกับจิมมี่จากการทำความสะอาด สิ่งนั้น
ขอบคุณทุกท่านสำหรับความช่วยเหลือของคุณ ฉันลงเอยด้วยการทำสิ่งต่อไปนี้:
กระบวนการนี้ค่อนข้างรวดเร็วสำหรับชุดข้อมูลขนาดใหญ่
ฉันอยากจะแนะนำMACROซึ่งเป็นวิธีที่ดีที่สุดและเร็วที่สุดในการลบแถวทั้งหมดออกจากชีตทั้งหมดไม่มีข้อความTOTALในคอลัมน์ B ที่ระบุ
Sub Delete_Rows()
Dim rng As Range, cell As Range, del As Range
Dim sht As Worksheet
For X = 1 To 10
Set sht = Sheets(X)
Set del = Nothing
Set rng = Intersect(sht.Range("B1:B9"), sht.UsedRange)
For Each cell In rng.Cells
If (cell.Value) <> "Total" Then
If del Is Nothing Then
Set del = cell
Else
Set del = Union(del, cell)
End If
End If
Next cell
If Not del Is Nothing Then del.EntireRow.Delete
Next X
End Sub
มันทำงานอย่างไร:
Alt+F11
เพื่อเปิดVB Editor
แล้วCopy & Paste
ประมวลกฎหมายนี้เป็นมาตรฐานโมดูลB1:B9
ในทุกแผ่นจากที่คุณกำลังพยายามที่จะลบแถวบันทึก:
For X = 1 to 10
ชี้ให้เห็นว่า MACRO จะค้นหาTOTAL
ใน10 Worksheets
ซึ่งเป็นที่สามารถแก้ไขได้
นอกจากนี้คุณยังสามารถปรับเปลี่ยนช่วงการค้นหาB1:B9
และสตริงTotal
ตามที่คุณต้องการ