WinFuture-Forum.de: [Excel] Doppelte Zeichenfolge finden/entfernen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Office 2010
Seite 1 von 1

[Excel] Doppelte Zeichenfolge finden/entfernen


#1 Mitglied ist offline   networker1 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 24. Februar 16
  • Reputation: 0

geschrieben 23. Juli 2018 - 14:45

Hallo zusammen,

ich habe hier ein kleines Problem wo ich nicht mehr weiterkomme und evtl. hat ja jemand eine Idee.

Ich möchte eine beliebige Zeichenfolge die doppelt zwischen meinem Trennzeichen vorkommt entfernen.
Mein Trennzeichen ist das &-Zeichen.

Beispiel1:
Zellen Inhalt = P1&P1&V1 -> P1 kommt doppelt (hintereinander) vor und muss einmal entfernt werden.
Ausgegeben werden soll "P1&V1".

Zellen Inhalt = P1&V1&P1 -> P1 kommt zweimal vor aber nicht hintereinander, passt so.
Ausgegeben werden soll "P1&V1&P1".


Eine Lösung mit Excel Formeln wäre cool, per Makro würde es auch gehen.


Vielen Dank schon mal :)

Gruß Networker
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 23. Juli 2018 - 17:35

Das riecht für mich nach einem Fall von 'regulärem Ausdruck' mit Backreference.

Weiß jetzt nicht, ob Excelformeln das können. Mit Macros geht es aber.

Bin grad nicht 100%ig sicher, wie die Syntax in VBA dafür ist, aber "in etwa" so müßte es gehen:

/([a-z0-9]){2,}/gi (ungetestet)

und ersetzen mit

"$1"

VB will ggf. .Global=True und .IgnoreCase = True statt den gi-Flags oben.

Dieser Ausdruck sucht nach Dopplungen ab Länge 2 und ersetzt diese durch eine einzelne Kopie, ohne Rücksicht auf Position und Anzahl.
Ggf. kann noch das & als Begrenzer untergebracht werden, um evtl erwünschte Dopplungen nicht zu erwischen - zB so

/([a-z0-9]\&){2,+}/gi (ungetestet)

(hier mit Escape, um zu vermeiden, daß das & "besonders" interpretiert wird. Bei VB evtl nicht erforderlich.)


Natürlich noch mal bei VB nachgucken, wie die das genau haben wollen. Das macht jeder irgendwie anders. Obiges Beispiel geht eher Richtung perl regex, was recht gut unterstützt wird (allerdings ist bei Perl die Rückreferenz per \1 ... \n; MS verwendet $1 .. $n).

(NB: $1 ist KEINE Variable, sondern ein Term aus MS' regulären Ausdrücken. Daher gehört das immer als String in " "; sonst wäre es ein Syntaxfehler.)

Dieser Beitrag wurde von RalphS bearbeitet: 23. Juli 2018 - 17:37

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0