Text in Zellen ersetzen - Excel-Tipps

Inhaltsverzeichnis

Jean stellte diese Woche die Excel-Frage:

Ich versuche, ein Lieferantenpreisbuch in Excel so zu konvertieren, dass die UPC-Codes mit unserem UPC-Codesystem übereinstimmen. Ihr Preisbuch enthält eine Spalte in Excel mit einer Reihe von Zahlen, z. 000004560007 ODER cel000612004. Was ich tun muss, ist zweifach. Ich muss die ersten drei Nullen entfernen, ohne andere Nullen in der Zelle zu löschen. Als nächstes muss ich einen dreistelligen Code "upc" vor die erste numerische Ziffer in der Zelle anhängen. Dies wird ein ständiger Bedarf sein. Ich muss mehrere Personen schulen, um das Excel-System zu verwenden.

Es hört sich so an, als hätte Jean bereits überlegt, Edit-Replace zu verwenden, um die drei Nullen loszuwerden. Dies würde nicht funktionieren, da ein Ersetzen der Bearbeitung unter "000004560007" dazu führen würde, dass beide Vorkommen von 000 verschwinden.

Zuerst möchte ich Jean vorschlagen, eine temporäre Spalte neben den aktuellen Preiscodes einzufügen, eine Formel für die Transformation zu schreiben und dann mit Edit-Copy, Edit-PasteSpecial-Values ​​die Formel wieder über die ursprünglichen Preiscodes zu kopieren.

Die schlecht dokumentierte REPLACE () -Funktion reicht in diesem Fall aus. Ich war von der Implementierung von REPLACE () enttäuscht. Ich hätte gedacht, dass ein bestimmter Text ersetzt werden muss, aber stattdessen muss der Benutzer die zu ersetzenden Zeichenpositionen herausfinden. REPLACE ersetzt einen Teil einer Textzeichenfolge durch eine neue Zeichenfolge. Die vier Argumente, die Sie an die Funktion übergeben, sind die Zelle mit dem alten Text, die Position des Zeichens im alten Text, den Sie ersetzen möchten, die Anzahl der zu ersetzenden Zeichen und der neue zu verwendende Text.

Meine vereinfachende Annahme ist, dass die drei Nullen den Beginn des UPC-Codes in der Zeichenfolge darstellen. Somit besteht keine Notwendigkeit, nach dem ersten numerischen Zeichen in der Zelle zu suchen. Sobald die Formel die drei Nullen gefunden hat, kann sie diese drei Nullen durch die Zeichenfolge "upc" ersetzen.

Um den Ort des ersten Auftretens von "000" im Text zu finden, verwenden Sie diese Formel:

=FIND(A2,"000")

Die Formel, die Jean in Zelle B2 eingeben müsste, wäre:

=REPLACE(A2,FIND("000",A2),3,"upc")

Mein Gedanke ist, dass die Preisanalysten eine Reihe von Zellen hervorheben und dann dieses Makro aufrufen. Das Makro verwendet am Anfang eine Schleife mit "Für jede Zelle in Auswahl". Mit dieser Schleife wird "Zelle" zu einer speziellen Bereichsvariablen. Sie können cell.address oder cell.value oder cell.row verwenden, um die Adresse, den Wert oder die Zeile der aktuellen Zelle in der Schleife zu ermitteln. Hier ist das Makro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Beachten Sie, dass dies ein destruktives Makro ist. Wenn der Benutzer einen Zellbereich hervorhebt und das Makro ausführt, werden diese Zellen geändert. Es versteht sich von selbst, dass Sie Ihr Makro gründlich auf Testdaten testen möchten, bevor Sie es auf reale Produktionsdaten setzen. Wenn Sie eine Situation wie die von Jean haben, in der Sie ständig eine Spalte mit einer komplexen Formel transformieren müssen, kann das Schreiben eines einfachen Makros wie dem hier abgebildeten ein effektives und zeitsparendes Werkzeug sein.

Interessante Beiträge...