Mam cztery wartości:

OT 10    
OT 11 1AT    
1P; OT 12
OT 13; 10P

Korzystając z tego wzoru:

=IF(ISNUMBER(SEARCH("OT",C1)),IF(SUM(LEN(C1)-LEN(SUBSTITUTE(C1, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&C1, LARGE(INDEX(ISNUMBER(--MID(C1,ROW(INDIRECT("$1:$"&LEN(C1))),1))* ROW(INDIRECT("$1:$"&LEN(C1))),0), ROW(INDIRECT("$1:$"&LEN(C1))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(C1)))/10),""),)

Jestem w stanie przekonwertować te wartości na następujące wartości:

10    
111    
112
1310

Czy istnieje sposób, aby naprawić tę formułę tak, aby ciągnęła tylko liczbę sąsiadującą z „OT”, bezpośrednio w prawo, z dokładnie jedną spacją między nimi? Prawidłowe dane wyjściowe to:

10    
11    
12
13

Wynik może być tylko dwu- lub trzycyfrową liczbą, jeśli oryginalna wartość to OT 100 2AT, to wyjście powinno mieć wartość 100.

0
user11116157 23 marzec 2020, 20:38

2 odpowiedzi

Najlepsza odpowiedź

To zwróci liczbę po OT:

=--SUBSTITUTE(SUBSTITUTE(MID(A4,FIND("OT",A4)+3,FIND(" ",REPLACE(A4&" ",1,FIND("OT",A4)+3,""))),";",""),"/","")

NEST inne

enter image description here

2
Scott Craner 23 marzec 2020, 17:58

= PODSTAW (MID (C1, ZNAJDŹ ("DO"; C1) +3,3), "", "")

Lub w przypadku, gdy powinno być tylko; lub / gdzieś: = SUBSTITUTE (SUBSTITUTE (SUBSTITUTE (MID (C1, FIND ("OT", C1) +3,3), "", ""), ";", ""), "/", "" )

var src = 'OT 10    |OT 11 1AT    |1P; OT 12|OT 13; 10P|OT 14/ 10P'.split('|');
for(var i=0;i<src.length;i++) {
   var pos = src[i].indexOf('OT');
   console.log("FIND OT (XL) position", pos+1, "MID", src[i].substr(pos+3,3).replace(/;/g,'').replace(/\//g,''));
}
0
Tom 23 marzec 2020, 18:15