Страницы: 1
RSS
Проблема с распознаванием длинного текста ячейки в функции ВПР
 
День добрый.  
Проблема в том, что имеется ячейка с количеством символов более 255, и я так думаю это и является причиной не срабатывания функции ВПР.    
Идентичность ячеек проверил ДЛСТР() и СОВПАД(), вопрос в следующем имеются ли варианты обмануть Excel и оставить ячейку с исходным количеством символов? Хотя, в принципе, буду рад любой подсказке для выхода из такой ситуации.    
Заранее благодарен!  
P.S. Файл прикрепляю
 
Можно так:  
Формула массива =ПОИСКПОЗ(1;ЕСЛИ(B18=B24:B43;1;0);0)  
Возвращает номер "строки" массива, в данном случае 15. Длинна значения, условно, не имеет.  
Потом производим смещение, в вашем случае так:  
=СМЕЩ(D23;ПОИСКПОЗ(1;ЕСЛИ(B18=B24:B43;1;0);0);0;1;1)  
Опять же, массивом.  
Для ввода массива нужно вводить ctrl+shift+enter.  
Но это для случая, когда при выборе из списка в ячейке b18 значение не "обрезается" до 255 знаков. В 2007 не обрезается, насчёт 2003 не уверен. Т е у вас сейчас там 255 знаков, если вы вручную сократили до 255, то верхняя формула подойдёт, если нет, то читаем дальше...  
 
Как вариант, если происходит обрезание при выборе из выпадающего списка, поиск по тому же принципу первых 255 знаков по массиву из "обрезанных до 255 знаков" значений.  
=СМЕЩ(D23;ПОИСКПОЗ(ПСТР(B18;1;255);ПСТР(B24:B43;1;255);0);0;1;1)  
массив(ctrl+shift+enter).  
Ищет первое совпадение первых 255 знаков ячейки b18 в массиве из значений "первых 255 знаков".  
 
PS: формулы массива вводятся нажатием ctrl+shift+enter, а не просто enter.  
Формулы массива не дружат с объединёнными ячейками. Для ввода формулы массива в объединённую ячейку, нужно вначале убрать объединение ячеек, потом ввести формулу массива, а потом опять объединить эти ячейки.  
В файле-примере приведены оба варианта.
 
Спасибо большое, что откликнулись на мою проблему, и за предложенные варианты ее решения!    
На меня вечером таки снизошло озарение, и по сути сходное с Вашим:"Длина значения, условно, не имеет". Так как в массиве это единственная такая некорректная ячейка с количеством знаков более 255 (и благо, расчет категории МЗ для нее не нужен,- она фиксированная III) просто вставил дополнительное условие конкретно для нее:  
=ЕСЛИ(B18=B38;"III";ВПР(B18;$B$24:$D$40;3;ЛОЖЬ))  
{quote}{login=}{date=21.07.2009 06:32}{thema=}{post}Но это для случая, когда при выборе из списка в ячейке b18 значение не "обрезается" до 255 знаков.В 2007 не обрезается, насчёт 2003 не уверен.{/post}{/quote}  
В 2007 была такая же беда как и в 2003. Вот интересно еще что, я выбираю это длинное значение  из списка, и оно отображается полностью, но эксель для себя (формул) его обрезает до 255, так получается? Но это так, чисто риторический вопрос...  
Еще раз благодарю за помощь!
 
Да нет проблем.  
Решение ваше по сути другое: мой вариант проверяет соответствие данных b18 всем ячейкам диапазона, там ведь диапазон указан, а не одна ячейка...  
Но, опять же, если у вас только 1 такое значение и добавления других не предвидится-ваш вариант лучше.  
 
Вообще, по поводу 255 я так и не понял. Обрезать самое значение ячеек эксель, по крайней мере 2007, не должен и при выборе у меня ничего не обрезается.  
Но впр да, не работает.
 
Еще вариант решения, где длинна строки не имеет значения, а также без ввода через {Ctrl+Shift+Enter} и без летучести формулы:  
 
=ИНДЕКС(D24:D43;СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;B24:B43=B18;0)))  
 
для этого, правда, надо будет вводить неурезанную строку в B18 :-)
KL
 
В Excel 2003 функция ВПР() может принимать в качестве первого аргумента только 255 символов. Если будет указана ячейка для поиска, содержащая более 255 символов, то функция выдает #ЗНАЧ.  
Для того, чтобы ничего не обрезать и ничего не править, можно применить функцию ВПР() в таком формате:{ =ВПР(ЛЕВСИМВ(А1;255);ЛЕВСИМВ(А2:В20;255);2;0)}.  
Но, к сожалению, поиск будет проведен только по первым 255-ти символам.  
С уважением, Александр.
 
{quote}{login=Sh_Alex}{date=23.07.2009 12:05}{thema=}{post}В Excel 2003 функция ВПР() может принимать в качестве первого аргумента только 255 символов. Если будет указана ячейка для поиска, содержащая более 255 символов, то функция выдает #ЗНАЧ.  
Для того, чтобы ничего не обрезать и ничего не править, можно применить функцию ВПР() в таком формате:{ =ВПР(ЛЕВСИМВ(А1;255);ЛЕВСИМВ(А2:В20;255);2;0)}.  
Но, к сожалению, поиск будет проведен только по первым 255-ти символам.  
С уважением, Александр.{/post}{/quote}  
А заодно урежутся данные в столбце B если они длиннее 225-и. Их-то за что? И потом, при урезании существует вероятность ошибки если первые 255 символов совпадают.
KL
 
{quote}{login=KL}{date=23.07.2009 12:34}{thema=}{post}{quote} А заодно урежутся данные в столбце B если они длиннее 225-и. Их-то за что? {/post}{/quote}<BR> А вот здесь, Вы не правы. Данные извлекаются в полном объеме. Никакой вивисекции значений в столбце В не будет. С уважением, Александр.
 
{quote}{login=Sh_Alex}{date=26.07.2009 01:14}{thema=Re: }{post}А вот здесь, Вы не правы. Данные извлекаются в полном объеме. Никакой вивисекции значений в столбце В не будет. С уважением, Александр.{/post}{/quote}  
Я рискну еще раз ошибиться, сказав, что вы наверняка не проверили свое утверждение опытным путем. Как известно, примеры приводимые авторами вопросов не всегда реальны. Где у вас гарантия, что в приведенном примере список полный и что в 3-ем столбце таблицы (именно там, где находятся результаты) не будет значения длинной превышающей 255 символов, раз уж там есть значение в 124 знака. Вашим "ЛЕВСИМВ(А2:В20;255)" вы сокращаете до 255 символов все, что есть в этой таблице, а не только область поиска, т.е. первый столбец. Уверяю вас, вивисекция имеет место быть ;-) На всякий случай прилагаю файл.
KL
 
{quote}{login=KL}{date=26.07.2009 01:50}{thema=}{post} Как известно, примеры приводимые авторами вопросов не всегда реальны. Где у вас гарантия, что в приведенном примере список полный и что в 3-ем столбце таблицы (именно там, где находятся результаты) не будет значения длинной превышающей 255 символов, раз уж там есть значение в 124 знака.{/post}{/quote}  
Реален. Гарантирую - список полный, дополняться не будет,по крайней мере до изменений в НТД. Вот ссылка на итоговый файл - http://eom.com.ua/index.php?action=downloads;sa=downfile;id=591 но так как я СОавтор, полных прав не имею, - листы под паролем
 
:-) под паролем...
 
{quote}{login=KL}{date=26.07.2009 01:50}{thema=}{post}{quote}{login=Sh_Alex}{date=26.07.2009 01:14}{thema=Re: }{post}А вот здесь, Вы не правы. Данные извлекаются в полном объеме. Никакой вивисекции значений в столбце В не будет. С уважением, Александр.{/post}{/quote}  
Я рискну еще раз ошибиться, сказав, что вы наверняка не проверили свое утверждение опытным путем. Уверяю вас, вивисекция имеет место быть ;-) На всякий случай прилагаю файл.{/post}{/quote}  
Да "KL", согласен с Вами, я опростоволосился и посыпаю голову пеплом.    
Поторопился, хотел сохранить время и проверил извлечение из таблицы "длинного текста" функцией ВПР(), где критерием поиска служило "короткое значение".  
С уважением, Александр.
 
Такая формула работает:  
=ПРОСМОТР(1;1/(B18=B24:B40);D24:D40)
Страницы: 1
Читают тему
Наверх