Страницы: 1
RSS
Поиск в ячейке и на основании нескольких вхождений подставление шифра
 
Здравствуйте.

В приложенном файле, в столбце D список материала, а в столбце E формула которая ищет в материалах несколько уникальных вхождений в наименовании материала и на этой основе вставляет шифр. Если посмотреть на формулу, то видно что она перегружена и с ней крайне тяжело работать если нужно найти ошибку или даже внести новый шифр.
Прошу у вас помощи, как упростить мою формулу?
 
таблица соответствий (база) на отдельном листе очень помогла бы.
 
Здравствуйте, ferit,
Чисто теоретически кто-то мог бы постараться и извлечь логику из глубин Вашей монструозной формулы... Однако, шансов на это не много.
Те не менее выход есть! Попробуйте самостоятельно описать логику составления шифра исходя из имеющихся данных - судя по тому, что в шифре всего 4 знака, она не должна быть чрезмерно сложной. Скорее всего в таком случае Вам помогут быстрее.
 
я тоже об этом подумал и сделать такую базу не проблема, но вот как потом оперировать с этой базой?

IKor, да логика-то тут простая. Например первая строчка "Двутавр 20K2 ГОСТ 26020-83 / СтЗспЗ ГОСТ 535-2005" в этой строке я ищу ключи (в формуле еще много всяких ключей для других материалов) *Двутавр*, *20К2", *ГОСТ*, *26020*. и если эти вхождения есть, то ставим шифр.
Код
=ЕСЛИ(И(ЕЧИСЛО(ПОИСК("*Двутавр*";D2));ЕЧИСЛО(ПОИСК("*20К2*";D2));ЕЧИСЛО(ПОИСК("*ГОСТ*";D2));ЕЧИСЛО(ПОИСК("*26020*";D2)));"2233"

Но мне не хватает знаний, как это упростить.
 
Цитата
ferit написал:
я тоже об этом подумал и сделать такую базу не проблема, но вот как потом оперировать с этой базой?
сделайте пару строк и посмотрим как с ней бороться.
Пока в длинной формуле ковыряться и ловить суть лень.
 
Посмотрите это может наведет на умные мысли.
П.С. В Приемах есть еще много чего интересного.
Изменено: V - 13.01.2021 14:23:00
 
Цитата
V написал:
сделайте пару строк и посмотрим как с ней бороться.

Кратко это будет так выглядеть
 
ferit,  что в последнем файле желаемый результат?
Не бойтесь совершенства. Вам его не достичь.
 
Нет, в последнем файле: слева материалы, справа база данных для подставления шифра в соседней ячейке с материалом
 
ferit, что нет? я спросил ЧТО в приведенном является желаемым результатом?
Не бойтесь совершенства. Вам его не достичь.
 
ferit,
В том случае, если последовательность подстрок в проверяемой строке не меняется, то как минимум можно обойтись одной проверкой вместо четырёх
Код
=ЕЧИСЛО(ПОИСК("*Двутавр*20К2*ГОСТ*26020*";"___________  Двутавр__________20К2_______________ГОСТ____________26020_____________."))
 
Цитата
Mershik: что нет?
желаемого результата там, очевидно, нет  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
ferit,
Если Вы создадите отдельную таблицу _числовых_ шифров и соответствующих им масок вида "*текст*текст*...*текст*", то формула вернет Вам нужный результат
Код
=СУММПРОИЗВ(вектор_шифров*ЕСЛИОШИБКА(ПОИСК(вектор_масок;проверяемая_текстовая_строка);0))
ВАЖНО, чтобы проверяемые тексты попадали не более, чем под одну маску  
 
IKor, Спасибо огромное. Работает как надо!!!!

Если возможно, расскажите каков принцип работы вашей формулы
 
ferit,
Функция возвращает сумму из произведений вектора шифров на вектор результатов сравнения, т.к. все кроме одного сравнения проверяемой строки с вектором масок дают ошибки >> нули, то произведение остается только одно - с нужным шифром.
С этой и другими идеями подробно Вы сможете ознакомиться в разделе сайта Приемы - например, здесь Массовая замена текста формулами  
Страницы: 1
Наверх