Страницы: 1
RSS
Вставка информации из соседней ячейки по 1-му условию (Если, то, иначе), Примеры имеются, ГОСТ/ГОСТ
 
Добрый день!

Помогите дополнить формулу для ставки информации в ячейку по условию под номером 7.
Считывание информации из соседней ячейки.
Информация отображена в "Таблица1" с примерами.


Пример:
Скрытый текст

Имеется
Лист 0,35х500х1000 ГОСТ 19904-90/08пс ГОСТ 9045-93

Должно быть
ГОСТ 19904-90/ГОСТ 9045-93
Изменено: fourSTEP - 16.06.2021 17:16:21
 
Код
=ЕСЛИ(ЕОШ(НАЙТИ("ГОСТ";B2));
             ЕСЛИ(ПРАВСИМВ(B2;2)="ТУ";
                        ЕСЛИ(ЕОШ(НАЙТИ("ОЖО";B2));
                                    ЕСЛИ(ПРАВСИМВ(B2;3)="ТУ ";1;2);
                                                ПСТР(B2;НАЙТИ("ОЖО";B2);НАЙТИ("ТУ";B2)+2-НАЙТИ("ОЖО";B2)));
                         ЕСЛИ(ПРАВСИМВ(B2;3)="ТУ ";ЕСЛИ(ЕОШ(НАЙТИ("ОЖО";B2));
                                    ЕСЛИ(ПРАВСИМВ(B2;3)="ТУ ";1;2);
                                                ПСТР(B2;НАЙТИ("ОЖО";B2);НАЙТИ("ТУ";B2)+2-НАЙТИ("ОЖО";B2)));ЕСЛИ(ЕОШ(НАЙТИ("ОСТ";B2));
                                        ЕСЛИ(ЕОШ(НАЙТИ("ТУ";B2));
                                                     "";
                                                     ПСТР(B2;НАЙТИ("ТУ";B2);ДЛСТР(B2)));
                                         ПСТР(B2;НАЙТИ("ОСТ";B2);ДЛСТР(B2)))));
                ПСТР(B2;НАЙТИ("ГОСТ";B2);ДЛСТР(B2)))
 
UDF
Код
Function iGost(cell$)
 With CreateObject("VBScript.RegExp")
     .Pattern = "(ГОСТ|ОЖО|ОСТ|ТУ).+"
   If .test(cell) Then
     iGost = .Execute(cell)(0)
   Else
     iGost = ""
   End If
 End With
End Function
 
=IFERROR(REPLACE([@Наименование];1;FIND(INDEX({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};AGGREGATE(15;6;{1;2;3;4}/(FIND({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};" "&[@Наименование])>0);1));" "&[@Наименование])-1;);"") но как по простому удалить "08пс"  - пока не совсем понимаю

пока только
=IFERROR(REPLACE(IFERROR(REPLACE([@Наименование];SEARCH("/* ГОСТ";[@Наименование];SEARCH(" ГОСТ*/*ГОСТ";" "&[@Наименование]));FIND(" ГОСТ";[@Наименование];SEARCH(" ГОСТ*/*ГОСТ";" "&[@Наименование])+2)-SEARCH("/* ГОСТ";[@Наименование];SEARCH(" ГОСТ*/*ГОСТ";" "&[@Наименование]))+1;"/");[@Наименование]);1;FIND(INDEX({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};AGGREGATE(15;6;{1;2;3;4}/(FIND({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};" "&[@Наименование])>0);1));" "&[@Наименование])-1;);"")
но это для случая когда / может появится до первого ГОСТ, а ну и с регистром ничего не мудрил

Чуть короче
=IFERROR(REPLACE(IFERROR(LEFT([@Наименование];FIND("/";[@Наименование];SEARCH(" ГОСТ*/";[@Наименование])))&"ГОСТ "& TRIM(RIGHT(SUBSTITUTE([@Наименование];" ГОСТ";REPT(" ";99);2);99));[@Наименование]);1;FIND(INDEX({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};AGGREGATE(15;6;{1;2;3;4}/(FIND({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};" "&[@Наименование])>0);1));" "&[@Наименование])-1;);"")

Вариант на базе  из прошлой темы
=IFERROR(MID(TRIM(IFERROR(LEFT([@Наименование];FIND("/";[@Наименование];SEARCH(" ГОСТ*/";[@Наименование])))&"ГОСТ "& TRIM(RIGHT(SUBSTITUTE([@Наименование];" ГОСТ";REPT(" ";99);2);99));[@Наименование]));FIND("ГОСТ";TRIM(B5));99); IFERROR(MID(TRIM(B5);FIND("ТУ ";TRIM(B5));99); IFERROR(MID(TRIM(B5);FIND(" ОСТ";TRIM(B5))+1;99); IFERROR(MID(TRIM(B5);FIND("ОЖО";TRIM(B5));99);""))))
Изменено: БМВ - 17.06.2021 07:33:06
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
=IFERROR(REPLACE(IFERROR(LEFT([@Наименование];FIND("/";[@Наименование];SEARCH(" ГОСТ*/";[@Наименование])))&"ГОСТ "& TRIM(RIGHT(SUBSTITUTE([@Наименование];" ГОСТ";REPT(" ";99);2);99));[@Наименование]);1;FIND(INDEX({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};AGGREGATE(15;6;{1;2;3;4}/(FIND({" ГОСТ";" ОСТ";" ОЖО";" ТУ"};" "&[@Наименование])>0);1));" "&[@Наименование])-1;);"")
Спасибо большое! =) Очень помогли!!
Выбрал 3-ий вариант. Проще на редакцию.
Изменено: fourSTEP - 17.06.2021 16:54:15
Страницы: 1
Наверх