Der beste Weg, um führende Nullen aus einem nicht numerischen Wert in Excel zu entfernen

13

Ich habe viele Zellen in einer Excel-Tabelle mit 9 Zeichen von 0-9 und AZ, denen einige Nullen vorangestellt sind:

000000123 
000001DA2 
0000009Q5
0000L210A
0000014A0
0000A5500
00K002200

Ich möchte die führenden Nullen entfernen, damit die Werte zu:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Wie würde ich das in einer Excel-Formel machen? Ich würde es vorziehen, die Verwendung eines VBA-Makros zu vermeiden.

Chris Farmer
quelle
Wenn Sie noch einige Einschränkungen in Bezug auf die Daten haben, kann ich möglicherweise eine spezifischere Lösung finden.
Lance Roberts
Vielen Dank. Die Werte haben führende Nullen, sodass sie insgesamt 9 Zeichen umfassen. Ansonsten sind die Werte Ziffernfolgen von 0 bis 9, gemischt mit dem Großbuchstaben AZ. Es ist möglich, dass eine nachgestellte Null vorhanden ist, die Teil des tatsächlichen Werts ist und nicht gekürzt werden sollte.
Chris Farmer
Um genau zu sein, gibt es niemals eingebettete Leerzeichen. Nur 0-9 und AZ.
Chris Farmer
Bearbeitet, um diese nachgestellten Null-Beispiele
Chris Farmer
@ Chris, ich kann es tun, wenn wir die maximale Anzahl von Nullen kennen, die jemals in die Zeichenfolge eingebettet oder nachfolgend angezeigt werden (obwohl es sich um eine lange Formel handelt).
Lance Roberts

Antworten:

14

Hier ist eine Lösung, die zellintensiv, aber korrekt ist.

Tragen Sie Ihre Daten in Spalte A ein.

Geben Sie in B1 die Formel ein:

=IF(
    LEFT(A1) = "0" ,
    RIGHT(A1, LEN(A1)-1),
    A1)

Dadurch wird nach einer einzelnen führenden Null gesucht und diese entfernt.

Kopieren Sie diese Formel so viele Spalten nach rechts, wie Ihre Daten Zeichen enthalten können (in diesem Fall 9, sodass Sie zu Spalte J wechseln). Kopieren Sie es für jede Datenzeile nach unten.

Die letzte Spalte enthält Ihre Daten ohne führende Nullen.

Isaac Moses
quelle
Nach vielen Versuchen ist dies die einzige Version, die ohne Rückgriff auf VBA funktioniert.
Skamradt
Kommentar von @Richard: Ich mag Isaacs Lösung. Wenn mehr als eine führende Null vorhanden ist, kopieren Sie weiterhin von Zellen, die seine Formel enthalten, und fügen Sie nur Werte in die ursprünglichen Zellen ein: Jedes Mal wird eine weitere führende Null entfernt (falls vorhanden).
Ivo Flipse
8

Die folgende Formel benötigt weder zusätzliche Zellen noch muss sie als Array-Formel eingegeben werden:

=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)

Wenn für Zeichenfolgen wie 0oder eine einzelne Null zurückgegeben werden soll 00, kann die folgende Formel verwendet werden:

=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))
Andreas Flückiger
quelle
Diese Antwort funktioniert mit mehreren führenden Nullen und scheint die vollständigste und einfachste der hier genannten Antworten zu sein.
Peter
5

Dies ist ein schwieriges Problem bei einer Arbeitsblattfunktion. Das Folgende wird den Trick machen, aber nur, wenn die Nullen, die nicht führen, jeweils nur eine kommen und es keine nachgestellten Nullen und keine eingebetteten Leerzeichen gibt.

Es ersetzt alle Nullen durch Leerzeichen, schneidet sie ab (alle bis auf eingebettete einzelne Leerzeichen) und ersetzt dann die Nullen zurück.

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")
Lance Roberts
quelle
Warum nur, wenn die Nullen, die nicht führen, immer nur einzeln kommen ? Und was ist mit =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))(in der Hoffnung CLEAN, Tabs zu entfernen; wenn nicht; verwenden Sie einen anderen Wert in CHAR)
Arjan
@Arjan, ich habe TRIM getestet und es hat eingebettete mehrere Leerzeichen durch ein einziges Leerzeichen ersetzt, aber ich werde jetzt Ihre Informationen recherchieren und sehen, was ich finden kann. (Ich benutze 2003).
Lance Roberts
Die CLEAN-Funktion speichert die eingebetteten Leerzeichen, aber auch alle bis auf den ersten führenden Speicherplatz.
Lance Roberts
Ich habe CLEAN hinzugefügt, um das hinzugefügte CHAR (9) zu entfernen. Die Verwendung von CLEAN für den TRIMmed-Wert sollte keine führenden Leerzeichen enthalten ...?
Arjan
Ja, aber als das CHAR (9) hinzugefügt wurde (zu jeder Null), fügte es sich auch zu den führenden Nullen hinzu. Ich sehe, dass Sie es nur verwendet haben, um die nachfolgenden Nullen zu speichern, und ich werde es in die Antwort aufnehmen.
Lance Roberts
5

Diese Lösung funktioniert für Eingabewerte, die alle genau neun Zeichen umfassen.

Richten Sie zunächst eine feste Tabelle mit zehn Zeilen ein, die die folgenden als Text formatierten Zahlen enthält.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

Nehmen wir an, die Tabelle befindet sich in den Zellen A1 bis A10

Angenommen, Ihr Eingabewert befindet sich in Zelle B1 und Ihre Ergebniszelle ist C1

Verwenden Sie die folgende Formel in Zelle C1

= RECHTS (B1, MATCH (B1, $ A $ 1: $ A $ 10,1) -1)

Kije
quelle
Clever! Wie für den dritten Parameter in der MATCHFunktion: 1 = finde den größten Wert kleiner oder gleich lookup_value
Arjan
4

Verwenden Sie für Daten in A1 die folgende Formel:

= RECHTS (A1, LEN (A1) -MAX ((FINDB (REPT ("0", ROW (A $ 1: A $ 100))), A1 & "-" & REPT ("0", 100)) = 1) * REIHE (A $ 1: A $ 100)))

Eingabe mit Strg + Umschalt + Eingabetaste. Es funktioniert für Zeichenfolgen mit bis zu 100 Zeichen.

Toc
quelle
Beeindruckend! Einige kleinere Hinweise: Strg-Umschalt-Eingabetaste (Cmd-Umschalt-Rückgabe auf einem Mac) erstellt eine Array-Formel. Fügen Sie die Formel wie gewohnt ein, drücken Sie jedoch anstelle der Eingabetaste Strg-Umschalt-Eingabetaste, um sie zu speichern. Es wird dann zwischen geschweiften Klammern angezeigt. In OpenOffice.org auf einem Mac konnte ich die Formel für die nächsten Zeilen nicht nach unten ziehen (da dies dann eine Super-Array-Formel ergeben würde). Aber das Kopieren und Einfügen funktioniert, daher bin ich mir sicher, dass es auch eine Verknüpfung gibt. Und OpenOffice.org kennt FINDB nicht. Die Verwendung von FIND scheint ebenfalls zu funktionieren.
Arjan
Elegante Lösung!
Wilson