Doppelte Werte finden

Hallo Expertinnen und Experten,

da ich hier schon des öfteren lesen konnte, wie scheinbar unmögliches möglich wurde, jetzt etwas in meinen Augen sehr schwieriges.
Gibt es eine Möglichkeit, doppelte Werte in einer Zelle zu finden und zu löschen?
Ich habe eine Datei in der Artikel in einem sogenannten Feld "Langtext " beschrieben werden. Dadurch das mehrere Leute an dieser Datei gearbeitet haben, ist es nun vorgekommen, dass sich Werte innerhalb dieser Beschreibung doppeln und sogar dreifachen. :frowning:
Jetzt mein konkreter Wunsch.
Es müsste eine Möglichkeit geben, mir in Hilfsspalten die doppelten Werte anzuzeigen und jetzt kommts, wenn ich die dann lösche, sie auch aus dem „Langtext“ entfernt sind. Es geht dabei hauptsächlich um den Herstellernamen und um Herstellertypen. Da die aber mal am Anfang der Zelle sind, bekloppter Weise mal mittendrin oder am Ende, kann ich nicht mal eben mit der „Ersetzen“ Funktion arbeiten. Und da Wörter wie „und“, „der“, „ein“ usw. durchaus mal öfter in einem Text vorkommen kann, muss auf jeden Fall, selbst bei einer Lösung noch vieles händisch gemacht werden, würde aber die Aufgabe sehr erleichtern, wenn schon mal mehrfache Werte sondiert würden.
Für mich erstmal unmöglich, lasse mich aber gerne eines besseren belehren.

Viele Grüße
Jürgen

Hi Jürgen,

Gibt es eine Möglichkeit, doppelte Werte in einer Zelle zu
finden und zu löschen?

Ja.

Ich habe eine Datei in der Artikel in einem sogenannten Feld
"Langtext " beschrieben werden. Dadurch das mehrere Leute an
dieser Datei gearbeitet haben, ist es nun vorgekommen, dass
sich Werte innerhalb dieser Beschreibung doppeln und sogar
dreifachen. :frowning:

Mir sehr unklar warum die da wenn schon „VW Golf“ in der Zelle steht dies nochmals an die Zelle anhängen.

Es müsste eine Möglichkeit geben, mir in Hilfsspalten die
doppelten Werte anzuzeigen und jetzt kommts, wenn ich die dann
lösche, sie auch aus dem „Langtext“ entfernt sind.
Es geht
dabei hauptsächlich um den Herstellernamen und um
Herstellertypen. Da die aber mal am Anfang der Zelle sind,
bekloppter Weise mal mittendrin oder am Ende, kann ich nicht
mal eben mit der „Ersetzen“ Funktion arbeiten. Und da Wörter
wie „und“, „der“, „ein“ usw. durchaus mal öfter in einem Text
vorkommen kann, muss auf jeden Fall, selbst bei einer Lösung
noch vieles händisch gemacht werden, würde aber die Aufgabe
sehr erleichtern, wenn schon mal mehrfache Werte sondiert
würden.

Ich schlage vor, du postest hier mal eine kleine Beispieltabelle mit Beispielen wie es vorher aussieht und nachher aussehen soll, den pre-Tag dabei benutzen, wird unterhalb des Eingabefeldes erklärt.
Oder lade bei www.hostarea.de o.ä. eine derartige Beispieltabelle hoch und poste hier den Link.
Auch da wäre es gut 2 Tabellenblätter zu haben, eins wie es vorher aussah und eines wie es nach einem Makro aussehen sollte.
Makro, weil ich annehme, ohne Vba wird das nicht gehen was du vorhast.
Gruß
Reinhard

Moin, Jürgen,

Gibt es eine Möglichkeit, doppelte Werte in einer Zelle zu
finden und zu löschen?

es gibt noch nicht mal eine Möglichkeit, eine Zelle doppelt zu belegen. Meinst Du gleiche Werte in unterschiedlichen Zeilen?

Gruß Ralf

Hallo Reinhard,

Gibt es eine Möglichkeit, doppelte Werte in einer Zelle zu
finden und zu löschen?

Ja.

Gut, ich hatte es gehofft.

Mir sehr unklar warum die da wenn schon „VW Golf“ in der Zelle
steht dies nochmals an die Zelle anhängen.

Sehe ich genauso, aber es war wohl zu schwer, mal vorher zu schauen welche Daten vorhanden waren, einfach noch mal anhängen ist wohl einfacher und schneller. Jetzt habe ich den Salat. Apropos wie war das noch? „Viele Köche verderben den Brei?“

Oder lade bei www.hostarea.de o.ä. eine derartige
Beispieltabelle hoch und poste hier den Link.

http://www.hostarea.de/server-11/Nove

Gruß
Jürgen

Hallo Jürgen,

der Link funktioniert leider nicht,

probier mal folgendes

kopiere die Spalte mit den Memos, füge sie in eine neue Spalte etwas abseits oder in ein neues Tabellenblatt ein

->Daten, ->Text in Spalten, …

das Ergebnis kopieren, eine freie Stelle markieren, ->Inhalte einfügen, ->transponieren

alles sortieren, nacheinander für jede Spalte, mehrfache Einträge löschen, Zellen dabei jeweils nach oben verschieben, keine Spalten verändern (löschen)!

alles markieren und in eine neue Datei einfügen, dabei transponieren.
als csv oder txt speichern, mit dem Editor öffnen, ->Ersetzen (suchen nach ; , ersetzen mit 1Leerzeichen), speichern schließen, anschließend in excel öffnen, die 1 Spalte markieren, kopieren und wieder in die Ausgangstabelle einfügen.

bitte testen, sollte aber funktionieren
Gruß
Marion

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Da hilft nur Leute auswechseln.
Man sollte nicht in einen Kübel kotzen und dann nachträglich versuchen, noch brauchbare Lebensmittel heraus zu fischen.

Hermes

Hallo zusammen,

konnte leider erst jetzt antworten und versuche es noch mal den Link hier zu posten.

www.hostarea.de/server-11/November-7e04ed38f0.xls

Viele Grüße
Jürgen

Hallo Marion,

Habe gerade nen Kopp wie ein Rathaus und konnte auf die Schnelle Deiner Beschreibung noch nicht folgen. Habe es jetzt wohl hinbekommen den Link zu posten.

Gruß
Jürgen

Gibt es eine Möglichkeit, doppelte Werte in einer Zelle zu
finden und zu löschen?
Es müsste eine Möglichkeit geben, mir in Hilfsspalten die
doppelten Werte anzuzeigen und jetzt kommts, wenn ich die dann
lösche, sie auch aus dem „Langtext“ entfernt sind. Es geht
dabei hauptsächlich um den Herstellernamen und um
Herstellertypen. Da die aber mal am Anfang der Zelle sind,
bekloppter Weise mal mittendrin oder am Ende, kann ich nicht
mal eben mit der „Ersetzen“ Funktion arbeiten. Und da Wörter
wie „und“, „der“, „ein“ usw. durchaus mal öfter in einem Text
vorkommen kann, muss auf jeden Fall, selbst bei einer Lösung
noch vieles händisch gemacht werden, würde aber die Aufgabe
sehr erleichtern, wenn schon mal mehrfache Werte sondiert
würden.

Hi Jürgen,
Hermes hat es zwar sehr drastisch dargestellt, aber er hat Recht.
M.E. wäre es effizienter die Liste völlig neu einzugeben und das gleich in einer Datenmaske:
Lieferant:
Mindestbestellmenge:
Artikelnummer des Lieferanten:
Artikelnummer bei Erbse *gg*:
Anwendungsgebiet:
Temperaturbereich:
usw.

Die bestehende Liste zu restaurieren ist schwierig.

Doppelte Einträge wie 1600583 zu finden und als doppelt eingetragen zu erkennen ist problemlos mit Vba möglich.
Allerdings, das Semikolon ist natürlich übel:
;1600583
1600583

Gewaltigere Probleme machen aber Einträge wie

3M Deutschland GmbH 92 Elektro-Isolierband,
3M Deutschland GmbH Isolierband

und

NYM-J 3 x 1,5
NYMJ3x15

Weiterhin wird es schwierig ein Makro zu basteln was aus
15mm x 33m 15 x 33 x 0,075
33m x 15mm x 0,075mm
macht.

Ich kenne jetzt nur zwei Zellen deiner Liste, was noch alles für Komplikationen auftreten ist noch zu prüfen.

Okay, ich schreibe ein Makro, was alle exakt doppelten Wörter ermittelt und auflistet. Mit exakt ist gemeint, sie haben vorne und hinten ein Leerzeichen, d.h. „;1600583“ wird nicht als doppelt erkannt.

Mehr ist im Rahmen dieses Forums nicht drin.

Gruß
Reinhard

Hallo Reinhard,

Hermes hat es zwar sehr drastisch dargestellt, aber er hat
Recht.

Stimmt, liegt aber leider nicht in meiner Macht.

M.E. wäre es effizienter die Liste völlig neu einzugeben und

Stimmt auch, aber ich brauche erst mal ne Notlösung.

das gleich in einer Datenmaske:
Lieferant:
Mindestbestellmenge:
Artikelnummer des Lieferanten:
Artikelnummer bei Erbse *gg*: > nö, ist nicht unsere
Anwendungsgebiet:
Temperaturbereich:
usw.

Die bestehende Liste zu restaurieren ist schwierig.

Doppelte Einträge wie 1600583 zu finden und als doppelt
eingetragen zu erkennen ist problemlos mit Vba möglich.
Allerdings, das Semikolon ist natürlich übel:
;1600583
1600583

Ok, da würde ich dann Semikolon durch Leerzeichen ersetzen

Gewaltigere Probleme machen aber Einträge wie

3M Deutschland GmbH 92 Elektro-Isolierband,
3M Deutschland GmbH Isolierband

es reicht wenn 3M Deutschland GmbH verschwindet

und

NYM-J 3 x 1,5
NYMJ3x15

wieso, sind doch eindeutige Werte, sollen auch beide erhalten bleiben, damit sowohl mit Strich,Leerzeichen und Komma, wie auch ohne dem gesucht bzw. gefunden werden kann

Weiterhin wird es schwierig ein Makro zu basteln was aus
15mm x 33m 15 x 33 x 0,075
33m x 15mm x 0,075mm
macht.

braucht nicht

Ich kenne jetzt nur zwei Zellen deiner Liste, was noch alles
für Komplikationen auftreten ist noch zu prüfen.

mehr kann ich Dir/euch nicht zumuten, ihr würdet mir sicher zum Suizid raten.

Okay, ich schreibe ein Makro, was alle exakt doppelten Wörter
ermittelt und auflistet. Mit exakt ist gemeint, sie haben
vorne und hinten ein Leerzeichen, d.h. „;1600583“ wird nicht
als doppelt erkannt.

Werden diese doppelten Werte,Wörter „nur“ aufgelistet, oder kann auch mein Wunsch erfüllt werden, d.h. wenn ich den Wert in der Auflistung lösche, sich auch der Text entsprechend reduziert?

Mehr ist im Rahmen dieses Forums nicht drin.

Das würde mir auch schon seeeehr helfen.

Gruß
Jürgen

Hi Jürgen,

Doppelte Einträge wie 1600583 zu finden und als doppelt
eingetragen zu erkennen ist problemlos mit Vba möglich.
Allerdings, das Semikolon ist natürlich übel:
;1600583
1600583

Ok, da würde ich dann Semikolon durch Leerzeichen ersetzen

Gewaltigere Probleme machen aber Einträge wie

3M Deutschland GmbH 92 Elektro-Isolierband,
3M Deutschland GmbH Isolierband

es reicht wenn 3M Deutschland GmbH verschwindet

NYM-J 3 x 1,5
NYMJ3x15

wieso, sind doch eindeutige Werte, sollen auch beide erhalten
bleiben, damit sowohl mit Strich,Leerzeichen und Komma, wie
auch ohne dem gesucht bzw. gefunden werden kann

Ist unterschiedlich geschrieben, ist aber das Gleiche doppelt in einer Zelle, also müßte doch eins verschwinden!?

Weiterhin wird es schwierig ein Makro zu basteln was aus
15mm x 33m 15 x 33 x 0,075
33m x 15mm x 0,075mm
macht.

braucht nicht

Ich kenne jetzt nur zwei Zellen deiner Liste, was noch alles
für Komplikationen auftreten ist noch zu prüfen.

mehr kann ich Dir/euch nicht zumuten, ihr würdet mir sicher
zum Suizid raten.

-) oder einen Programmierauftrag daraus machen.

Okay, ich schreibe ein Makro, was alle exakt doppelten Wörter
ermittelt und auflistet. Mit exakt ist gemeint, sie haben
vorne und hinten ein Leerzeichen, d.h. „;1600583“ wird nicht
als doppelt erkannt.

Werden diese doppelten Werte,Wörter „nur“ aufgelistet, oder
kann auch mein Wunsch erfüllt werden, d.h. wenn ich den Wert
in der Auflistung lösche, sich auch der Text entsprechend
reduziert?

Welches „und“ soll denn gelöscht werden wenn mehrere und’s vorhanden sind. Immer das erste „und“ stehen lassen, alle anderen „unds“ löschen macht für den Textusammenhang wenig Sinn.
Ich denke schon du mußt da manuell durch und pro zelle entscheiden welche "Und"s gelöscht werden müssen.

Mehr ist im Rahmen dieses Forums nicht drin.

Das würde mir auch schon seeeehr helfen.

Die Datei: http://www.hostarea.de/server-11/November-dec943eeb4…

enthält in Modul1 den nachfolgenden Code.

In A1 steht:

Mindestbestellmenge - 15 Rollen - FE510055117 - 3M Deutschland GmbH 92 Elektro-Isolierband, 15mm x 33m 15 x 33 x 0,075 / goldgelb / Band aus Polyimidfolie mit einem druckhaftenden Acrylklebstoff. Robust und dünn für den universellen Einsatz an thermisch besonders hoch beanspruchten Isolationen geeignet. - 3M Deutschland GmbH Isolierband;1600583 1600583

Das ergibt sich daraus:

Tabelle:
F:\[Doppel2t.xls]!Ziel2

 │ B │ C │ D │ E │ F │ G │ H │ 
──┼─────┼────┼─────┼─────┼────┼─────────────┼──────┤
1 │ - │ 15 │ x │ / │ 3M │ Deutschland │ GmbH │ 
──┴─────┴────┴─────┴─────┴────┴─────────────┴──────┘
Tabellendarstellung erreicht mit dem Code in FAQ2363
(Naja, die Zelle A1 sprengt den Code in FAQ2363 und wird viel zu breit angezeigt, deshalb weggelassen)

Den Code zu erweitern daß er stur alle mehrfach vorkommenden Zeichenfolgen löscht ist kein Akt, genauso daß er nur das erste Vorkommen der Zeichenfolge stehen läßt.
Aber wie o.g., ob das Sinn macht.
Kannst ja Info geben welche Variante du möchtest.

Ansonsten, ich habe so für mich, wer weiß vielleicht ja mal jmd ein ähnliches Problem, weitergebastelt und einige Features entwickelt.
Z.B. daß mehrfache Einträge in einer Zelle automatisch farblich markiert werden und einiges mehr, aber das sprengt den Rahmen von w-w-w.

Gruß
Reinhard

Option Explicit
'
Sub Mehrfache()
Dim Zei As Long, Satz As Variant, c As Integer, Pos As Integer
Dim Spa As Integer, Satz2 As Variant, Satz3 As Variant
With Worksheets("Ziel2")
 .Range("B1:IV3").ClearContents ' die 3 an Zeilenanzahl anpassen
 For Zei = 1 To 3 ' die 3 an Zeilenanzahl anpassen
 Spa = 1
 Satz = Split(.Cells(Zei, 1))
 Satz2 = ""
 Satz3 = ""
 For c = 0 To UBound(Satz)
 If InStr(1, Satz2, " " & Satz(c) & " ") Then
 If InStr(1, Satz3, " " & Satz(c) & " ") = 0 Then Satz3 = Satz3 & " " & Satz(c) & " "
 Else
 Satz2 = Satz2 & " " & Satz(c) & " "
 End If
 Next c
 Satz3 = Split(Application.WorksheetFunction.Trim(Satz3))
 Spa = 1
 For c = 0 To UBound(Satz3)
 .Cells(Zei, c + 2) = Satz3(c)
 Next c
 Next Zei
End With
End Sub

Hallo Reinhard,

schon mal vielen Dank für das Makro.

NYM-J 3 x 1,5
NYMJ3x15

wieso, sind doch eindeutige Werte, sollen auch beide erhalten
bleiben, damit sowohl mit Strich,Leerzeichen und Komma, wie
auch ohne dem gesucht bzw. gefunden werden kann

Ist unterschiedlich geschrieben, ist aber das Gleiche doppelt
in einer Zelle, also müßte doch eins verschwinden!?

Richtig, sobald mehrfach, soll eins löschbar sein, sofern es nicht sinnvoll ist. Deshalb formuliere ich noch mal neu.
Das Makro welches Du geschrieben hast, erfüllt momentan nur den ersten Teil meines Wunsches. Falls das überhaupt möglich sein sollte, würde ich gerne jetzt noch eine Funktion haben, dass wenn ich z.B. in dem Tabellenblatt von Dir auf C3 klicke oder wie auch immer, sich der Text in A3 bis auf den einmaligen Wert von C3 reduziert. Ich würde dann mit Autofilter arbeiten und die sinnvollen Worte wie „und“ usw. ausblenden und nur noch die Zellen mit sinnlosen Werten ansprechen und halt den Text in Spalte A kürzen. War das jetzt verständlich, oder bleibt das Wuschdenken?

Trotz mittlerweile schon schlechtem Gewissen viele Grüße
Jürgen

Hallo Jürgen,

ich konnte mir erst heute den link anschauen. da wird das wohl nicht klappen, so wie ich das vorgeschlagen hab. Tut mir leid, da hilft wohl nur neu machen. Oder du nutzt das Makro von Reinhard.

Gruß
Marion

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marion,

danke Dir dennoch, es war ja einen Versuch wert.

Mal schauen ob Reinhard mir noch ein wenig weiterhelfen kann,
sonst kloppe ich den Müll wirklich in die Tonne.

Gruß
Jürgen

den ersten Teil meines Wunsches. Falls das überhaupt möglich
sein sollte, würde ich gerne jetzt noch eine Funktion haben,
dass wenn ich z.B. in dem Tabellenblatt von Dir auf C3 klicke
oder wie auch immer, sich der Text in A3 bis auf den
einmaligen Wert von C3 reduziert. Ich würde dann mit
Autofilter arbeiten und die sinnvollen Worte wie „und“ usw.
ausblenden und nur noch die Zellen mit sinnlosen Werten
ansprechen und halt den Text in Spalte A kürzen. War das jetzt
verständlich, oder bleibt das Wuschdenken?

Hallo Jürgen,

die Datei:

http://www.hostarea.de/server-11/November-f159ba0c31…

hat 3 Schaltflächen denen die 3 nachfolgenden Prozeduren zugeordnet sind.
Getestet nur ganz kurz, sag halt Bescheid wenn was nicht klappt.
Makro1 könnte man noch deselectieren, hatte es heute morgen in Zeitnot aufgezeichnet.

Das neue Makro Loeschen() erwartet in Ax den jeweiligen Text. Es durchläuft dann nach rechts die Zeile und falls dort Einträge sind, werden diese in Ax gesucht und bis auf das erste Vorkommen, alle anderen Vorkommen gelöscht.

Gruß
Reinhard

Option Explicit
'
Sub Mehrfache()
Dim Zei As Long, Satz As Variant, c As Integer, Pos As Integer
Dim Spa As Integer, Satz2 As Variant, Satz3 As Variant
With Worksheets("Ziel2")
 .Range("B1:IV3").ClearContents ' die 3 an Zeilenanzahl anpassen
 For Zei = 1 To 3 ' die 3 an Zeilenanzahl anpassen
 Spa = 1
 Satz = Split(.Cells(Zei, 1))
 Satz2 = ""
 Satz3 = ""
 For c = 0 To UBound(Satz)
 If InStr(1, Satz2, " " & Satz(c) & " ") Then
 If InStr(1, Satz3, " " & Satz(c) & " ") = 0 Then Satz3 = Satz3 & " " & Satz(c) & " "
 Else
 Satz2 = Satz2 & " " & Satz(c) & " "
 End If
 Next c
 Satz3 = Split(Application.WorksheetFunction.Trim(Satz3))
 Spa = 1
 For c = 0 To UBound(Satz3)
 .Cells(Zei, c + 2) = Satz3(c)
 Next c
 Next Zei
End With
End Sub
'
Sub Loeschen()
Dim Spa As Integer, Zei As Long, Pos As Integer, Satz As String
With Worksheets("Ziel2")
 For Zei = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
 If .Cells(Zei, 1) "" Then
 Satz = .Cells(Zei, 1) & " "
 For Spa = 2 To .Cells(Zei, Columns.Count).End(xlToLeft).Column
 If .Cells(Zei, Spa) "" Then
 Pos = InStr(1, Satz, .Cells(Zei, Spa) & " ")
 While InStr(Pos + 1, Satz, .Cells(Zei, Spa) & " ")
 Pos = InStr(Pos + 1, Satz, .Cells(Zei, Spa) & " ")
 Satz = Left(Satz, Pos - 1) & Mid(Satz, Pos + Len(.Cells(Zei, Spa)) + 1)
 Wend
 End If
 .Cells(Zei, Spa) = ""
 Next Spa
 .Cells(Zei, 1) = Application.WorksheetFunction.Trim(Satz)
 End If
 Next Zei
End With
End Sub
'
Sub Makro1()
'
' Makro1 Makro
' Makro am 28.11.2007 von r aufgezeichnet
'

'
 Sheets("Ursprung").Select
 Columns("A:A").Select
 Selection.Copy
 Sheets("Ziel2").Select
 Range("A1").Select
 ActiveSheet.Paste
 Range("A1").Select
End Sub
1 „Gefällt mir“