Цитата |
---|
Максим Зеленский написал: ЗЫ так и не понял, чем не угодили формулы массива. |
Получение информации из прайс листа, с выбором диапазона исходных данных в зависимости от маски артикула
Получение информации из прайс листа, с выбором диапазона исходных данных в зависимости от маски артикула
08.04.2015 12:41:42
Максим,
спасибо за быстрый ответ и интересное решение, поскольку с работой функции ПРОСМОТР в деталях разбираюсь только сейчас - можно 2 вопроса по ней? 1) на сколько важно искать значение "2" в "ПРОСМОТР(2;" или в данном случае (когда значения массива могут быть только "1" и "#Н/Д" можно "2" заменить на "1" ? 2) на сколько важно наличие двойного унарного минуса в "--(ПОИСКПОЗ(Setup!$A$1:$A$10;$A1;0))" ? >вы пытаетесь сделать взаимоисключающие вещи, увы. далеко не все формулы могут так работать, как СУММПРОИЗВ. В целом задача такая - есть прайс лист, который обновляется ежемесячно, по нему через ВПР (ранее он был меньше 65K строк) легко вытягивалась информацию о описании и цене по артикулу. Сейчас кол-во строк стало значительно больше 65K, надо преобразовать исходные данные его так, чтобы для любой (в том числе и старой версии Excel, у которой есть ограничение в 65K строк на лист) можно было используя только стандартные функции (без помощи VBA и формул массивов Ctrl-Shift-Enter) по артикулу находить описание и цену. Пока лучшее что смог придумать - это по заранее заданным маскам сгруппировать данные в несколько разных колонок одного листа и с помощью тех же масок определять в какой колонке искать. Насколько в целом выбран логичный/оптимальный путь решения задачи? |
|
|
Получение информации из прайс листа, с выбором диапазона исходных данных в зависимости от маски артикула
07.04.2015 23:52:46
Уважаемы Гуру!
Есть прайс с данными в формате excel 95-97 (ограничение а 65K строк), которые хранятся на одном листе в несколько групп по 3 колонки (лист Price - артикул, описание, цена) , всего сейчас артикулов ~300K, и их количество постоянно увеличивается . В каждой группе, находятся артикулы подходящие под определенную маску (задается начало артикула, длинна артикулов может быть разной). На отдельном листе (Setup) хранится информация в каких колонках находятся артикулы c указанной маской, не использовать «*» и указать все варианты на которые могут начинаться артикулы практически не реально. Задача: с использованием стандартных функций Excel (без VBA и формул массивов требующих ввод через Ctrl-Shift-Enter) сделать поиск по артикулу его описания и цены в прайсе. В случае когда маски всех групп уникальные и не пересекаются – у меня получилось (лист Test с 1 по 24 строки). В случае когда есть пересечения масок (например SBS* и SB*, при этом заранее известно что более «точная» маска SBS* идет первой) - не получилось выделить именно первое попадание. Пользовался формулой СУММПРОИЗВ, в ней почему-то функция ПОИСКПОЗ использованная 1 раз работает как надо (работает с переданным ей диапазоном как с массивом и возвращает массив), а если использую функцию ПОИСКПОЗ 2 раза (одна вложена в другую) – то у «внутренняя» функция ПОИСКПОЗ перестает работать с передаваемым диапазоном как с массивом и возвращает одно значение вместо массива. Может подскажете где ошибка? |
|
|