Excel: wiele podstawień bez zagnieżdżania i bez VBA - excel, substytucja

Mam komórki, które mają dane, które chcę usunąć. Komórki zazwyczaj wyglądają tak:

alm1 105430_65042M
1993_5689IB
ALM99 3455 344C
0001_4555Alm5

Niektóre, ale nie wszystkie komórki zawierają tekst taki jak "almj", gdzie "j" jest dodatnią liczbą całkowitą. Chcę usunąć tę część. Chcę, aby wyjście wyglądało tak:

105430_65042M
1993_5689IB
3455 344C
0001_4555

Tak więc coś takiego działa

SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"alm1",""),"ALM99",""),"Alm5","")

But for my full data set I would need this to be kilkaset-głęboko zagnieżdżonych funkcji, ponieważ mój "alm" jest czasami pisany wielkimi literami, a czasem nie, a liczba całkowita może się różnić od 1 do 100. Wydaje się to bolesnym sposobem na zrobienie tego.

Czy istnieje sposób, w jaki mogę to przewidziećtekst wymieniony w kolumnie (więc mogę mieć kolumnę w innym arkuszu, który po prostu pochodzi z alm, alm1, ..., alm100), a następnie poprosić o zignorowanie wielkich liter, a następnie po prostu zastąpić?

Próbowałem odnieść się do kolumny $ M $ 1: $ M $ 100 w drugim argumencie substytutu funkcji, ale to nie działa.

SUBSTITUTE(A2,$M$1:$M$100,"")

Gdzie kolumna M zawiera "alm" alm1 ", ...," alm100 "itp.

Odpowiedzi:

2 dla odpowiedzi № 1

To powinno działać dla Ciebie, zwróciło oczekiwane wyniki na dostarczone przez Ciebie przykładowe dane:

=IF(COUNTIF(A2,"*alm*")=0,A2,TRIM(SUBSTITUTE(A2&" ",MID(A2&" ",SEARCH("alm",A2),FIND(" ",A2&" ",SEARCH("alm",A2))),"")))

1 dla odpowiedzi nr 2

Excel ma kiepskie możliwości obsługi ciągów. Wyrażenia regularne znacznie ułatwiłyby to zadanie.

W JavaScript jest to tak proste jak:

string.replace(/ *alm[0-9]+ */gi,"")

To robi globalne (g) rozróżnianie wielkości liter (i) od wszystkiego:

  • 0 lub więcej spacji
  • następnie "alm" (w każdym razie)
  • następnie 1 lub więcej liczb
  • następnie 0 lub więcej spacji

Możesz wkleić swoje dane w HTML skrzynia w tym skrzypcach, a to naprawi:

http://jsfiddle.net/xs71bvan/2/


Powiązane pytania
Menu