Clever-Excel-Forum

Normale Version: Text-Duplikate entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Moin Moin,

ich habe Duplikate in meiner Excel Datei die sich nicht mit der Standardfunktion entfernen lassen.

Beispiel:
Frequenzy

ABC
1Column1interactionsAnzahl
203914334-1_03931354-103914334-1_03931354-13
303914334-1_03931354-103914334-1_03931354-13
403914334-1_03931354-103914334-1_03931354-13
503931354-1_03914334-103931354-1_03914334-13
603931354-1_03914334-103931354-1_03914334-13
703931354-1_03914334-103931354-1_03914334-13

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Die Einträge 2-4 Stellen für mich keine Duplikate da. Ich möchte nur solche löschen, wo sich die Teile, die durch das "_" getrennt sind, in umgekerhter Reihenfolge wiederholen.
Also in diese Fall 5-7. Das am besten durch eine Funktion die ich dann auf mehrere Tabellen anwenden kann, da sich das Problem wiederholen wird.

Wie bekomme ich das hin?

Beste Grüße,
Mahadmakandis
Hallo Mahadmakandis,
dies ließe sich durch ein Makro regeln mit folgendem Ablauf regeln:
- A2 der  Tabelle wählen
- alle weiteren Ai durchsuchen, ob sich 'umgekehrtes Duplikat' findet
- wenn ja, Zeile löschen
- weiter mit nächster Zeile bis unten
- dann A3 wählen, wiederholen, bis wiederum unten in der Tabelle (leere Zelle A...)
Falls sonst kein Underline im Text vorkommt, wäre das folgender Code:

Code:
Sub DupKill()
Dim zeile As Long, i As Long, a1, a2, a3, a4, j
  With ActiveWorkbook.ActiveSheet
    zeile = 2
    While Not IsEmpty(.Cells(zeile, 1))
      j = InStr(1, .Cells(zeile, 1), "_")
      a1 = Left(.Cells(zeile, 1), j - 1)
      a2 = Mid(.Cells(zeile, 1), j + 1)
      i = zeile + 1
      While Not IsEmpty(.Cells(i, 1))
        a3 = Left(.Cells(i, 1), j - 1)
        a4 = Mid(.Cells(i, 1), j + 1)
        If a1 = a4 And a2 = a3 Then 'muss weg
          .Cells(i, 1).EntireRow.Delete shift:=xlUp
        Else
          i = i + 1
        End If
      Wend
      zeile = zeile + 1
    Wend
  End With
End Sub

Gruß der AlteDresdner
(13.06.2016, 19:40)AlterDresdner schrieb: [ -> ]Falls sonst kein Underline im Text vorkommt, wäre das folgender Code:

In jeder Interaktion kommt genau einmal "_" vor und in keinem anderen sonst.
Ich bin ein absoluter Excell Anfänger und habe mich durch ein anderes Thema gerade das 1. mal mit PowerQuery beschäftigt.

Was würdest du mir vom Aufwand empfehlene erst auszuprobieren? VBA oder Makros?
Hallo,

Zitat:Was würdest du mir vom Aufwand empfehlene erst auszuprobieren? VBA oder Makros?

... was zwei Begriffe für das Gleiche Ding sind.
Das soll ja auch bei Menschen vorkommen, daß sie Doppelnamen haben  :05:
Ok, aber es muss ja einen Unterschied geben, da er mir 2 Varianten vorgeschlagen hat.

Ich weiß zwar wie ich Makros aufzeichne aber nicht mit welchen Funktionen ich die beschriebenen Schritte ausführe.
Zum Beispiel den abgleich ob es die Zeile irgendwo in umgekehrter Reihenfolge gibt.

Den VBA Modus habe ich auch schon geöffnet aber auch dort weiß ich nicht wo ich den Code einfüge bzw. welche Anpassungen ich vornehmen muss.
Hallo Mahadmakandis,
mein Vorschlag ist ein Weg, am Anfang die Beschreibung, dann der Code.
Anzuwenden wäre er wie folgt:
- neue leere Datei erzeugen, Alt+F11 drücken, im sich dann öffnenden VBA-Editor den Code in 'Diese Arbeitsmappe' einfügen, Datei speichern.
- andere Datei mit den Daten öffnen, zu bearbeitendes Blatt anwählen, Makro DupKill starten, Ergebnis prüfen.
Da ich nicht weiß, mit welchem Excel Du arbeitest, musst Du den Weg zum Makro starten selbst finden.

Einfacher mit dem Start wird es, wenn Du ein beliebiges Makro aufzeichnest und dabei eine Tastenkombination Ctrl+wasauchimmer vergibst. Nach Beenden der Aufzeichnung eben aufgezeichneten Code durch den Inhalt von DupKill ersetzen.
Damit Du das nicht alles selber machen musst: Im Anhang ist die Datei DupKill.xlsm, das Makro ist mit Strg+q zu starten.
Jetzt also: DupKill.xlsm öffnen, andere Datei öffnen, zu bearbeitendes Blatt anwählen, Strg+q drücken, Ergebnis angucken.
Gruß der AlteDresdner
Hallo AlterDresdner,

danke für die Anleitung! Das ganze hat in sofern funktioniert, dass aus 834 Daten nun 430 Daten geworden sind.

Ich habe es Stichprobenartig für 2 mir vorher bekannten Duplikate überprüft: Sie sind weg!

Die Duplikate die ich behalten wollte sind auch weiterhin da.

Es gibt allerdings ein Problem.
Dafür muss ich kurz erklären wie die Duplikate entstanden sind.
Es wurde geschaut wieviele Erfinder an einem Patent gearbeitet haben.
01_inventors

ABCD
1patent_iddocdb_family_idInvnum_NFirstname
21379979603905936-1DAVID GEOFFREY
31379979603929502-1JONATHAN HOWARD
42380259505760100-9BRONWYN GLENICE
52380259503905936-1DAVID GEOFFREY
62380259503929502-1JONATHAN HOWARD
72380259505439989-1TREVOR CHARLES

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Danach wurde eine Spalte erstellt, die alle möglichen Interaktionen ausgibt.
Dabei ist folgendes passiert.
02_interactions

K
203905936-1_03929502-1
303929502-1_03905936-1
403905936-1_03929502-1
503905936-1_05439989-1
603905936-1_05760100-9
703929502-1_03905936-1
803929502-1_05439989-1
903929502-1_05760100-9
1005439989-1_03905936-1
1105439989-1_03929502-1
1205439989-1_05760100-9
1305760100-9_03905936-1
1405760100-9_03929502-1
1505760100-9_05439989-1

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8


Nach dieser Logik, müsste jede Beziehung somit ein Duplikat besitzen richtig?
Daher sollte sich der Datensatz von 834 Zeilen auf 417 verringern... es sind aber 430.
Hast du eine Idee woran das liegen könnte?
Hallo Mahadmakandis,
so sehe ich das nicht. Wenn Du mir mal die genannte Datei schickst (bereinigt oder nicht), würde ich mal schauen, wo evtl. etwas fehlt (schatte.jm(at)web(dot)de.
Gruß der AlteDresdner
(15.06.2016, 17:44)AlterDresdner schrieb: [ -> ]Hallo Mahadmakandis,
so sehe ich das nicht. Wenn Du mir mal die genannte Datei schickst (bereinigt oder nicht), würde ich mal schauen, wo evtl. etwas fehlt (schatte.jm(at)web(dot)de.
Gruß der AlteDresdner

Ich kann aktuell die Daten noch nicht schicken, da ich noch auf eine Antwort bezüglich der Weitergabe warte.

Wo ist der Fehler rein an der Logik? Die Formel, aus denen die Interaktionen entstanden sind befindet sich außerdem nicht in der Datei, die waren bereits gegeben. Mir wurde nur erklärt, wie sie entstanden sind.
Hat sonst noch jemand eine Idee woran das liegen könnte? Der Code scheint ja wirklich schon gut zu funktionieren.
Seiten: 1 2 3