Страницы: 1
RSS
Как привести "число сохранено как текст" к тексту, чтобы работал ВПР? изменение формата не помогает
 
Добрый день!
Необходимо сопоставить данные по артикулам товаров через ВПР.
В результате часть ячеек получается Н/Д - это те ячейки которые эксель пометил "число сохранено как текст" - и значение не сопоставляется.
Если нажать "преобразовать в число" то все работает, но мне нельзя преобразовывать весь столбец в числа, т.к. артикулы могут быть произвольными. часто начинаться с нескольких нулей и т.д. и преобразование в числа все порушит..
Нужно чтобы ВПР сравнивал ячейки как текст.
Но назначение формата для столбца "текстовый" - ничего не дает, ячейки по прежнему подсвечиваются как "число сохранено как текст" и по прежнему формула выдает НД...
Ситуация осложняется тем, что данных очень много (100тыс строк) и любое изменение вызывает перерасчет и зависание экселя на 40 минут.
Подскажите, что делать?
 
не соизволите-ли небольшой пример
 
Да, конечно. вот подготовил пример: формула сопоставления на листе2.
Одно значение уже исправил нажатием "преобразовать в число"  - для примера.
Но нужно как-то обойтись без преображения, чтобы как текст.
 

=ИНДЕКС(Лист1!A:F;ПОИСКПОЗ(1;(Лист2!C2=Лист1!A:A)*(--Лист2!D2=--Лист1!B:B)*(Лист2!B2=Лист1!D:D);0);6)

Изменено: Dark1589 - 08.04.2019 16:36:24
 
ТЕКСТ() поможет. да и ВПРа, как заявлено в теме нет.  
Изменено: Vik_tor - 08.04.2019 16:42:35
 
Dark1589, двойной минус в случаее если ячейка содержит текст, например OPTIC, вернет ошибку.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Максим В., ага, заметил опосля

Вот так можно вывернуться
Код
=ИНДЕКС(Лист1!A:F;ПОИСКПОЗ(1;(Лист2!C2=Лист1!A:A)*ЕСЛИОШИБКА((--Лист2!D2=--Лист1!B:B);(Лист2!D2=Лист1!B:B))*(Лист2!B2=Лист1!D:D);0);6)
 
Lamp, если Вам нужно определить наличие товара на Листе2 из Листа1 по совокупности критериев (категория, бренд, модель) не лучше ли воспользоваться функцией СЧЁТЕСЛИМН?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Максим В.СчетЕслиМн используется на первом листе.  Это не полный пример, там далее нужно брать значения с первого листа которые соответствую всем критериям (например цену, и подставлять её в текст).


Dark1589
Спасибо! Но будет ли корректно работать эта формула, если в столбце "Коллекция" \ "Модель" - будут 2 строки:
Имеющаяся:
ЛюстрыEurosvet10206Eurosvet|10206
и с нулем в начале:
ЛюстрыEurosvet010206Eurosvet|010206
формула будет считать их одинаковыми, хотя это не так...
т.е. здесь все-таки происходит приведение к числу, а не к тексту. Можно ли заставить Эксель считать числа текстом?
Изменено: Lamp - 08.04.2019 16:57:21
 
Цитата
Lamp написал:
Можно ли заставить Эксель считать числа текстом?
В ячейке А1 число, в любой другой формула:
=A1&""
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Lamp, вот Максим В., вам отличное решение подсказал, через &"" . Вместо моей конструкции ставьте (Лист2!D6&""=Лист1!B:B). Только в таком случае не найдёт цифровые значения, но это вам видимо и не нужно
 
Спасибо!!
Лист2!D6&""=Лист1!B:B&""

вот так все находит, даже числа!
 
а у меня в #5 что-то не так?
 
Цитата
Vik_tor написал:
а у меня в #5 что-то не так?
Честно сказать не очень понял как там применяется  функция  Текст(), в формулах её не увидел
 
=ИНДЕКС(Лист1!A:F;ПОИСКПОЗ(1;(Лист2!C2=Лист1!A:A)*(ТЕКСТ(Лист2!D2;0)=Лист1!B:B)*(Лист2!B2=Лист1!D:D);0);6)
 
Спасибо! Попробовал - этот вариант некорректно обрабатывает нули вначале. Показывает что значение есть, хотя его нет.
 
Чем так мучиться - не проще ли свою UDF написать и применить? Макросы разрешать совсем не нужно, если код положить в надстройку. Но правда у других работать не будет.
Изменено: Hugo - 08.04.2019 20:00:28
Страницы: 1
Наверх