2017-03-27 5 views
2

ich zwei Strings haben, möchte ich die Zahl in der Mitte "2200" i der FormelExcel, MID, SEARCH Fehler

=VALUE(MID(C3,SEARCH("_",C3)+11,4)) 

C3 bin mit extrahieren, wo die Zeichenfolge ist. Diese Formel arbeitet an "string 2" und gibt mir den Wert, nach dem ich suche "2200" aber funktioniert nicht für "String 1" ich bekomme #VALUE !. wenn ich die Formel ändern

=VALUE(MID(C3,SEARCH("_",C3)+10,4)) 

es funktioniert für „String 1“ funktioniert aber nicht für „String 2“ Wie kann ich gleiche Formel Arbeit in beiden Situationen haben?

String 1: ABC_1A1B_33C_2200_4AB_ABC4_4800

String 2: ABC_10A1B_33C_2200_4AB_ABC4_4800

thx,

Antwort

3

Dies sollte so lange wie das Beispiel arbeiten 2200 ist immer 4 Ziffern lang:

=LEFT(REPLACE(D7,1,FIND("@",SUBSTITUTE(D7,"_","@",3)),""),4) 
+0

Vielen Dank, es hat funktioniert. – fali

1

Dies tut nicht auf die Länge achten, nur dass es der vierte Block ist:

=TRIM(MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999)) 

enter image description here


Hinweis

Die oben gibt eine Textzeichenfolge, wie eine Zahl aussieht. Wenn eine Zahl ist, was gewünscht wird, dann ersetzen Sie die TRIM mit --

=--MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999) 
1

Diese Lösung auf der statischen Position der Zahl basiert zwischen dem dritten und vierten Unterstrich sein.

=--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2, "_", REPT(" ", LEN(A2)), 4), "_", REPT(" ", LEN(A2)), 3), LEN(A2), LEN(A2))) 

enter image description here

Notiere die Doppel einstellige (aka Doppel minus oder --), die Text-that-Look-like-a-Zahl in eine wahre Zahl umwandelt.

2

Wenn der Wert, den Sie extrahieren möchten immer in der vierten Position ist, dann können Sie versuchen:

=INDEX(TRIM(MID(SUBSTITUTE(C3,"_",REPT(" ",99)),seq_99,99)),4,1) 

wo seq_99 eine benannte Formel, die bezieht sich:

=IF(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))=1,1,(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))-1)*99) 

seq_99 zurückkehren ein Array: {1,99,198,297,...,25146}