Excel - Wie sortiere und lösche ich redundante Werte?

Problem

Ich habe versucht, unsere Patientendaten in unserer täglichen Arbeit im Labor wie folgt zu sortieren:

 "sample external no" "barcode" "assay" 4 321456 amf 9 125487 amf 10 155886 amf 15 162533 amf 45 154878 amf 48 124569 amf 1 750122 bupo 5 156453 bupo 6 145896 bupo 10 155886 bupo 11 114456 bupo 13 357456 bupo 15 17 789456 bupo 18 158456 bupo 45 154878 bupo 48 124569 bupo 1 750122 canno 5 156453 canno 8 159456 canno 20 145698 canno 25 123456 canno 45 154878 canno 48 124569 canno 1 750122 metamfo 2 112563 metamfo 15 162533 metamfo 28 metamfo 

Wenn diese Daten zur Hälfte noch während der Sortierung erstellt wurden, ist die erste Spalte zufällig, da ich das Ende der Sortierung auf der Grundlage von Spalte A in aufsteigender Reihenfolge erhalten möchte, dies jedoch auf der Grundlage von Spalte C. Wenn ein Wert in vorhanden ist Spalte A, die mit einem anderen Wert in der Spalte CI wiederholt wird, soll wie folgt sortiert werden

 4 321456 amf 9 125487 amf 10 155886 amf, bupo, 15 162533 amf, bupo, metamfo 45 154878 amf, bupo, canno, metamfo 48 124569 amf, bupo, canno, metamfo 1 750122 bupo, canno, metamfo 5 156453 bupo, canno 145896 bupo 11 114456 bupo 13 357456 bupo 17 789456 bupo 18 158456 bupo 8 159456 canno 20 145698 canno 25 123456 canno 2 112563 metamfo 28 112254 metamfo 

In diesem Fall wäre es ziemlich einfach, die Probe zu finden. Kannst du mir bitte helfen.

Lösung

Hier ist das Makro, das dies tun würde:

 Sub sortAndRemove () Dim lRow As Long Dim sExtNum As String Dim sBarCode As String Cells.Select Selection.Sort _ Key1: = Bereich ("A2"), _ Order1: = xlAscending, _ Key2: = Bereich ("B2"), _ Order2: = xlAscending, _ Key3: = Range ("C2"), _ Order3: = xlAscending, _ Header: = xlYes, _ OrderCustom: = 1, _ MatchCase: = False, _ Orientation: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlSortNormal lRow = 2 sExtNum = Cells (lRow, "A") sBarCode = Cells (lRow, "B") Do While (Cells (lRow, "A") "" "" ) Wenn Zellen (lRow + 1, "A") = sExtNum und (Zellen (lRow + 1, "B") = sBarCode) Dann Wenn Zellen (lRow, "C") "" Dann Zellen (lRow, "C") = Zellen (lRow, "C") & ", " & Zellen (lRow + 1, "C") Zeilen (lRow + 1). Löschen Sie andere Zellen (lRow, "C") = Zellen (lRow + 1, "C ") Zeilen (lRow + 1) .Ende löschen, wenn sonst lRow = lRow + 1 sExtNum = Zellen (lRow, " A ") sBarCode = Zellen (lRow, " B ") End If Loop Cells.Select Selection.Sort _ Key1: = Range ("C2"), _ Order1: = xlAscending, _ Key2: = Range ("A2"), _ Order2: = xlAscending, _ Key3: = Range ("B2"), _ Order3: = xlAscending, _ Header: = xlYes, _ OrderCustom: = 1, _ MatchCase: = False, _ Orientation: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlSortNormal Range ( A2 "). Wählen Sie End Sub 

Hinweis

Danke an rizvisa1 für diesen Tipp im Forum.

Vorherige Artikel Nächster Artikel

Top-Tipps