![]() |
Excel 2019: Как преобразовать текст из ячейки одной формулой?
Добрй день.
Подскажите, как преобразовать текст из ячейки одной формулой, без VBA, по такому правилу: Ячейка А: TSLA JUN 17 640 CALL Ячейка В: TSLA220617C00640000 Описание правила: https://help.yahoo.com/kb/SLN13884.html?guccounter=1 Т.е. нужно вместо названия месяца буквами подставлять номер месяца , а вместо CALL - C, PUT - P. |
Цитата:
Код:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ЛЕВСИМВ(A5;НАЙТИ(" ";A5)-1) &ПРАВСИМВ( ГОД(СЕГОДНЯ());2) & ВПР(ПСТР(A5;НАЙТИ(" ";A5;1)+1;НАЙТИ(" ";A5;НАЙТИ(" ";A5;1)+1)-1-НАЙТИ(" ";A5;1));{"Jan";"01":"Feb";"02":"Mar";"03":"Apr";"04":"May";"05":"Jun";"06":"July";"07":"Aug";"08":"Sept";"09":"Oct";"10":"Nov";"11":"Dec";"12"};2;0) & ПСТР(A5;НАЙТИ("^";ПОДСТАВИТЬ(A5;" ";"^";2));ДЛСТР(A5)-НАЙТИ("^";ПОДСТАВИТЬ(A5;" ";"^";2))+1);" ";"");"CALL";"C");"PUT";"P") Цитата:
Плюс нужно проверить правильность по другим строчкам. |
Короче?
Код:
=ПСТР(A1;1;4)&(ГОД(СЕГОДНЯ())-2000)*100+ПОИСКПОЗ(ПСТР(A1;6;4);{"JAN ";"FEB ";"MAR ";"APR ";"MAY ";"JUN ";"JUL ";"AUG ";"SEP ";"OKT ";"NOV ";"DEC "};0)&ПСТР(A1;10;2)&ПСТР(A1;13;1) |
megaloman, да. Тут вопрос, постоянно ли число символов, или оно может меняться. Например начинаться не с TSLA, а скажем с TS
|
a_axe, Это к постановщику вопрос. Можно немного длиннее:
Код:
=ПСТР(A1;1;НАЙТИ(" ";A1)-1)&(ГОД(СЕГОДНЯ())-2000)*100+ПОИСКПОЗ(ПСТР(A1;НАЙТИ(" ";A1)+1;3);{"JAN";"FEB";"MAR";"APR";"MAY";"JUN";"JUL";"AUG";"SEP";"OKT";"NOV";"DEC"};0)&ПСТР(A1;НАЙТИ(" ";A1)+5;2)&ПСТР(A1;НАЙТИ(" ";A1)+8;1) |
Цитата:
|
Цитата:
Тут есть еще нюанс, что в изначальном идентификаторе отсутствует год, а в новом год есть и нужно подставлять тот год, который соответствует месяцу в идентификаторе. Т.е. месяц всегда находится в будущем или настоящем по отношению к сегодня и если сейчас декабрь, то будущий месяц будет уже в новом году. Т.е. ни при смене года ни при наступлении этой даты формула должна показывать правильный год. |
stuermer01,
Цитата:
С годом как-то замудрёно, не лучше ли в какой-то общей ячейке прописывать год и уже оттуда брать его при преобразовании? |
Цитата:
Т.е. вместо "(ГОД(СЕГОДНЯ())-2000)" подставить ячейку с годом? |
Цитата:
Т.е. 640 -> 00640000; 641.5 -> 00641500 |
Вложений: 1
stuermer01, Жизнь как в сказке: чем дальше, тем страшнее.
Цитата:
Не понимаю, что такое страйк, но если перед цифрами должно быть 2 нуля (подробности Вы тщательно скрываете :)), то Код:
=ПСТР(A2;1;НАЙТИ(" ";A2)-1)&($B$1-2000)*100+ПОИСКПОЗ(ПСТР(A2;НАЙТИ(" ";A2)+1;3);{"JAN";"FEB";"MAR";"APR";"MAY";"JUN";"JUL";"AUG";"SEP";"OKT";"NOV";"DEC"};0)&ПСТР(A2;НАЙТИ(" ";A2)+5;2)&ПСТР(A2;НАЙТИ(" ";A2;НАЙТИ(" ";A2;1)+8)+1;1)&ПСТР("00"&ПОДСТАВИТЬ(ПСТР(A2;НАЙТИ(" ";A2)+8;НАЙТИ(" ";A2;НАЙТИ(" ";A2)+8)-(НАЙТИ(" ";A2)+8));".";"")&"0000000";1;8) |
Цитата:
Работает все правильно, спасибо! |
Вложений: 1
Цитата:
Цитата:
Код:
=ПСТР(A6;1;НАЙТИ(" ";A6)-1)&($B$1-2000)*100+ПОИСКПОЗ(ПСТР(A6;НАЙТИ(" ";A6)+1;3);{"JAN";"FEB";"MAR";"APR";"MAY";"JUN";"JUL";"AUG";"SEP";"OKT";"NOV";"DEC"};0)&ПСТР(A6;НАЙТИ(" ";A6)+5;2)&ПСТР(A6;НАЙТИ(" ";A6;НАЙТИ(" ";A6;1)+8)+1;1)&ПСТР(ЕСЛИОШИБКА(ПСТР(A6;НАЙТИ(" ";A6)+8;НАЙТИ(" ";A6;НАЙТИ(" ";A6)+8)-(НАЙТИ(" ";A6)+8))*1;ПОДСТАВИТЬ(ПСТР(A6;НАЙТИ(" ";A6)+8;НАЙТИ(" ";A6;НАЙТИ(" ";A6)+8)-(НАЙТИ(" ";A6)+8));".";",")*1)*1000+100000000;2;8) |
Время: 11:28. |
Время: 11:28.
© OSzone.net 2001-