วิธีลบแถวที่ซ้ำกันโดยยึดตามคอลัมน์บางคอลัมน์


11

ฉันมีแผ่นงาน Excel ที่มีแถวที่ซ้ำกัน

ฉันต้องการลบแถวหากคอลัมน์ ACDEF เหมือนกัน (ข้าม B ในขณะคำนวณซ้ำ แต่ลบออกขณะลบแถว)

ในขณะนี้มันจะไม่สนใจ B ในขณะที่การเปรียบเทียบและการลบ


คุณสามารถเพิ่มภาพหน้าจอที่มีก่อนและต้องการหลังจากได้หรือไม่ ฉันพยายามที่จะนึกภาพสิ่งที่คุณต้องการ (ขอโทษ)
เดฟ

ดังนั้นค่าที่ซ้ำกันในคอลัมน์ A, C, D, E, F จะส่งผลให้มีการลบแถวทั้งหมดโดยเก็บอินสแตนซ์แรกของการทำซ้ำหรือไม่ จะเกิดอะไรขึ้นถ้า A1 ตรงกับ A2 แต่ C2 ตรงกับ C3 จะลบแถวที่ 2 ได้อย่างไร
Raystafarian

คำตอบ:


18

ใน Excel 2013

  1. เลือกข้อมูลทั้งหมด
  2. เลือกแท็บข้อมูล -> ลบรายการซ้ำ
  3. ทำเครื่องหมายที่ 'คอลัมน์ของฉันมีส่วนหัว' หากข้อมูลของคุณมีส่วนหัวของคอลัมน์
  4. ยกเลิกการเลือกคอลัมน์ทั้งหมดที่คุณไม่ต้องการใช้ในการเปรียบเทียบ
  5. กดตกลง

เสร็จสิ้น


ไม่นี่จะค้นหาแถวที่คล้ายกับแถวอื่น ฉันก็คิดถึงสิ่งนี้เช่นกัน แต่มันก็เป็นคำตอบสำหรับคำถามที่แตกต่าง :)
Garrulinae

@Garrulinae คุณกำลังพูดอะไรคุณช่วยอธิบายได้ไหมว่ามันใช้งานไม่ได้ ดูเหมือนว่าคำตอบที่ถูกต้องสำหรับคำถามของ OP
TheCrazyProgrammer

@TheCrazyProgrammer - เมื่อดูสิ่งนี้ในอีก 2 ปีต่อมาฉันจะเห็นว่าคำถามของ OP " ฉันต้องการลบแถวหากคอลัมน์ ACDEF เหมือนกัน " สามารถตีความได้สองวิธี ฉันเอาไปหมายความว่าถ้าคอลัมน์เหล่านี้เหมือนกันภายในแถวนี้ คำตอบนี้อนุมานว่ามันหมายความว่าถ้าค่าในคอลัมน์ในแถวนี้เป็นเช่นเดียวกับแถวอื่น ในความเข้าใจย้อนหลังข้อสันนิษฐานนี้ดูเหมือนจะถูกต้องโดยเฉพาะอย่างยิ่งเมื่อมันถูกทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง
Garrulinae

@Garrulinae Gotcha ตอนนี้ฉันเห็นและเข้าใจคำตอบของคุณ ในหมายเหตุด้านฉันรู้สึกประหลาดใจที่ฟังก์ชั่นที่ OP ต้องการ (และฉัน) มีอยู่ในปุ่มตรงไปตรงมาใน Excel แต่ googling ให้บทความจำนวนมากที่ทำสิ่งที่ซับซ้อนซึ่งทำให้ฉันสงสัยในคำตอบนี้
TheCrazyProgrammer

@TheCrazyProgrammer ฉันมีข้อความด้านข้างด้วย - ฉันเพิ่งรู้ว่ามันเป็น OP ที่โพสต์คำตอบนี้! เห็นได้ชัดว่ามันเป็นคำตอบที่ถูกต้อง แต่น่าเสียดายที่คำถามนั้นไม่ชัดเจน
Garrulinae

1

หากฉันเข้าใจคุณอย่างถูกต้องกำหนดแถวที่ 1 และ 2 คุณต้องการลบแถวที่ 2 หากและถ้า A1 = A2, C1 = C2, D1 = D2, E1 = E2 และ F1 = F2

นี่คือสิ่งที่ฉันมาด้วย มันอาจจะสั้นลง แต่ทำตามเคล็ดลับ:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

สิ่งนี้จะวนซ้ำไปตามบรรทัดที่เหลือทั้งหมดโดยใช้ ActiveCell เป็นตัวชี้ไปยังแถวที่กำลังถูกประเมินและเก็บเซลล์แถว "ดั้งเดิม" ในตัวแปรปัจจุบัน เมื่อลูปสิ้นสุดลงเซลล์ด้านล่างปัจจุบันจะเปิดใช้งานและลูปการประเมินผลภายในจะเริ่มขึ้นอีกครั้ง

ถ้าฉันทำบางสิ่งบางอย่างไม่ลังเลที่จะบอกฉัน :)


1

เพิ่มสูตรนี้ลงในแต่ละแถวเช่น; ในคอลัมน์ G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

สิ่งนี้จะให้ผลลัพธ์เช่น:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

จากนั้นสร้างตัวกรองในคอลัมน์ G สำหรับแถวที่บอกว่า 'ลบฉัน' แล้วลบออก


0

@ Garrulinae

ฉันใช้ความคิดของคุณเป็นแรงบันดาลใจ ฉันมีแถวจำนวนมากและสิ่งที่ฉันต้องการคือการลบแถวที่มีค่าซ้ำกันของคอลัมน์ ถ้าฉันใช้ลบรายการที่ซ้ำกันในคอลัมน์นั้นมันจะลบเฉพาะข้อมูลจากคอลัมน์นั้นและไม่ใช่ทั้งแถว ฉันต้องการลบทุกแถวที่ 2 และ 3 จากตารางทั้งหมด ดังนั้นสิ่งที่ฉันทำฉันสร้างคอลัมน์ใหม่และปล่อยให้ค่าในแถวแรกว่างเปล่าลบฉันในแถวที่สองและสาม จากนั้นฉันก็คัดลอกค่าของสามแถวแรกของคอลัมน์นั้นเท่านั้น (ไม่ใช่ทั้งแถว) และวางเหนือทั้งคอลัมน์ของตาราง ตอนนี้ฉันมี "ลบฉัน" ในทุกแถวที่ 2 และ 3 ของคอลัมน์ทั้งหมด จากนั้นฉันต้องเรียงลำดับค่าของคอลัมน์นั้นและลบแถวทั้งหมดที่มี delete me คุณสามารถใช้โซลูชันเดียวกันหากคุณต้องการลบทุก ๆ 2, 3 และ 4 หรือ 2, 3, 4 และ 5 หรืออื่น ๆ ...

หวังว่าจะช่วยใครบางคน ....


2
ฉันไม่เข้าใจสิ่งที่คุณพูด แทนที่จะอธิบายสิ่งที่คุณทำคุณสามารถแสดงสูตรที่คุณใช้และแสดงตัวอย่างข้อมูลและแสดงว่าคำตอบของคุณทำงานกับข้อมูลนั้นได้อย่างไร
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.