/ / Excel-Formel, um das erste Nicht-Alpha-Zeichen in einer Zelle zu finden? - Excel, Excel-Formel

Excel-Formel, um das erste Nicht-Alpha-Zeichen in einer Zelle zu finden? - Excel, Excel-Formel

Gibt es eine Möglichkeit, eine Zellenformel in Excel zu verwenden, um den Index des ersten Nicht-Alphazeichens in einer referenzierten Zelle zu finden?

Ich habe Daten in Excel importiert, die eine Spalte haben, die wie folgt aussieht:

<some text I don"t want in the derived cell><some text that prepends the text I want and is always constant>TheTextIWant<Some non-alpha character><some other characters that may be alpha or not>

Ich versuche eine Formel zu erstellen, die so aussieht:

=MID(<cell reference>, SEARCH("<prepended text>, <cell reference>) + <length of prepended text>, ??)

Woher ?? ist eine Unterformel, die nach "TheTextIWant" das erste Nicht-Alpha-Zeichen findet

Ist das möglich?

Antworten:

1 für die Antwort № 1

Um ein bisschen mehr über das Array zu erfahrenFormel funktioniert (@ Jacobs Formel scheint in ein paar Fällen etwas falsch zu sein, z. B. 0 für "A1A"), also hier ist, was ich denke, ist eine funktionierende Version, erweitert für die Leichtigkeit des Lesens. Bitte lassen Sie mich von irgendwelchen Beispielen wissen, wo es nicht funktioniert.

=IF(
LEN(A1)=0
,0
,MIN(
IF(
ISNUMBER(
1*MID(
A1,
ROW(INDIRECT("A1:A"&LEN(A1))),
1
)
),
ROW(INDIRECT("A1:A"&LEN(A1))),
LEN(A1)+1
)
)
)
  1. Das Herzstück ist die Funktion row (), die im Array-Modus einmal für jede der Zellen im Bereich a1 ausgewertet wird: a * n *, wobei n ist die Länge der Zeichenfolge in Zelle A1, wodurch ein Array {1,2, ..., <em> n </ em>} erstellt wird.
  2. Das Array wird an die MID-Funktion übergeben, die wiederum ein Array {* char_1 *, * char_2 *, ..., * char_n *} erzeugt.
  3. Das Array wird mit 1 multipliziert, um zu verhindern, dass numerische Zeichen in nachfolgenden Schritten als Text analysiert werden. Dies könnte auch mit VALUE () geschehen.
  4. Es wird dann an die Funktion ISNUMBER () übergeben, die ein Array von logischen Werten ausgibt.

Dies ist das Array von Bedingungen an IF übergeben. Ein zweites Array wird dann durch Wiederholen des Schritts 1 erstellt, der die Position jedes Zeichens enthält. Die IF-Funktion erzeugt im Array-Modus ein Array von Ausgängen. Fälle, deren Bedingung TRUE ist, werden auf den entsprechenden Wert aus dem Array von Zeichenpositionen gesetzt, und der Rest wird alle auf LEN (A1) +1 gesetzt, so dass sie größer als alle möglichen Positionswerte für numerische Zeichen sind.

Die MIN-Funktion wertet dann die Array-Ausgabe ausdurch IF, wobei der kleinste Wert zurückgegeben wird, der die Position des ersten numerischen Zeichens in der Zeichenkette in Zelle A1 ist. Die äußerste IF-Funktion erzwingt, dass die Formel 0 zurückgibt, wenn in der Zelle kein Text vorhanden ist und nicht 1; Andernfalls gibt INDIRECT ein #REF zurück! Fehler bei der Suche nach Zelle A0, die sich nach oben ausbreitet, und die FALSE-Bedingung wird von IF zurückgegeben und gibt 0 + 1 = 1 zurück.

Um stattdessen nach der Position des ersten nicht-numerischen Zeichens zu suchen, müssen Sie nur die Reihenfolge der zweiten 2 Argumente zu IF umkehren:

=IF(
LEN(A1)=0
,0
,MIN(
IF(
ISNUMBER(
1*MID(
A1,
ROW(INDIRECT("A1:A"&LEN(A1))),
1
)
),
LEN(A1)+1,
ROW(INDIRECT("A1:A"&LEN(A1)))

)
)
)

0 für die Antwort № 2

Auf dieser Seite Es gibt eine Array-Formel zum Finden der"Position der ersten Ziffer in einer Zeichenfolge." Sie sollten das ändern können, um die "T" -Funktion zu verwenden (um zu bestimmen, ob ein Zeichen Text ist), eine kleine Subtraktion einzubauen und dann zu dem zu gelangen, wonach Sie suchen.