Глядя, чтобы извлечь неоднородную часть клетки - PullRequest
0 голосов
/ 15 октября 2019

Я получил некоторую помощь от сверстника, строящего формулу, но я заблудился, что делать дальше. Я пробовал несколько вещей, таких как добавление еще одного предложения IFERROR для покрытия отсутствующих данных, но я не могу заставить его работать.

Пример:

Column A (input)
*Some text and numbers* VM-123  *Some text and numbers*
*Some text and numbers* VM 1234  *Some text and numbers*
*Some text and numbers* VM-12345: *Some text and numbers*
*Some text and numbers* WELEV-12 *Some text and numbers*
*Some text and numbers* WELEV 123 *Some text and numbers*
*Some text and numbers* WELEV-1234. *Some text and numbers*

Column B (output)
VM-123
VM
VM-12345:
WELEV-12
WELEV 
WELEV-1234.

Формула, которую я использовалчтобы извлечь эти коды:

=IFERROR(IFERROR(LEFT(RIGHT(A1;LEN(A1)-FIND("WELEV";A1)+1);FIND(" ";RIGHT(A1;LEN(A1)-FIND("WELEV";A1)+1)));LEFT(RIGHT(A1;LEN(A1)-FIND("VM";A1)+1);FIND(" ";RIGHT(A1;LEN(A1)-FIND("VM";A1)+1))));" ")

Основная проблема заключается во втором и пятом извлечении в столбце B, где код обрезается на месте. Здесь мне нужен весь код и числа с пробелом между ними, его не нужно заменять дефисом. Я думаю, это потому, что он ищет слева пробел и встречает тот, что посередине, перед тем, как в конце.

Другая незначительная проблема - третье и последнее извлечение в столбце B, также включающее знаки препинанияпотому что в конце нет пробела, я полагаю. Если это возможно, я не хочу включать эти знаки препинания, если они находятся в конце кода.

Честно говоря, в данный момент это идет мне на ум. Я в целом понимаю, какие части функции выполняют, но мне не хватает общей картины для точной настройки этой формулы. Я только начал несколько недель назад и учусь. Если кто-нибудь может уточнить, я был бы очень благодарен.

Марк

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Предположим, ваши данные помещены в A1:A6 (вход)

В B1 (выход), формула скопирована:

=IFERROR(IFERROR(MID(A1,FIND("WELEV",A1),6),MID(A1,FIND("VM",A1),3))&LOOKUP(9^9,0+MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17,LOOKUP(9^9,FIND({"VM","WELEV"},A1)))),ROW($1:$20))),"")

Результат в B1: B6 (выход):

B1: VM-123
B2: VM 1234
B3: VM-12345
B4: WELEV-12
B5: WELEV 123
B6: WELEV-1234
1 голос
/ 15 октября 2019

Просто ради этого;здесь моя попытка (значительно длинная формула)

=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,".",""),":",""),MIN(IFERROR(SEARCH({"VM","WELEV"},SUBSTITUTE(SUBSTITUTE(A1,".",""),":","")),"")),MIN(IF(MID(UPPER(SUBSTITUTE(SUBSTITUTE(A1,".",""),":","")),ROW(INDEX(A:A,IFERROR(SEARCH("VM",SUBSTITUTE(SUBSTITUTE(A1,".",""),":",""))+2,SEARCH("WELEV",SUBSTITUTE(SUBSTITUTE(A1,".",""),":",""))+5)):INDEX(A:A,LEN(SUBSTITUTE(SUBSTITUTE(A1,".",""),":","")))),1)=TRANSPOSE(CHAR(ROW($65:$90))),ROW(INDEX(A:A,IFERROR(SEARCH("VM",SUBSTITUTE(SUBSTITUTE(A1,".",""),":",""))+2,SEARCH("WELEV",SUBSTITUTE(SUBSTITUTE(A1,".",""),":",""))+5)):INDEX(A:A,LEN(SUBSTITUTE(SUBSTITUTE(A1,".",""),":","")))),""))-MIN(IFERROR(SEARCH({"VM","WELEV"},SUBSTITUTE(SUBSTITUTE(A1,".",""),":","")),""))))

Формула является формулой массива и должна быть подтверждена с помощью Ctrl Shift Введите

Формула будет значительно короче, если вы не возражаете включить точку и точку с запятой, и просто SUBSTITUTE это в другом столбце.

В любом случае, вывод выглядит так:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...