Страницы: 1
RSS
Количество дней наличия товара, Необходмо определить количество дней наличия товара с учетом аналога
 
Здравствуйте коллеги!
Поступила мне интересная задачка, которую нужно решить без макроса.
Суть её в следующем - есть пул товаров с остатками по дням. Необходимо определить количество дней наличия товара на складе с учетом наличия аналога. При этом аналог может располагаться не в следующей за товаром строке, а в любой строке таблицы. В прилагаемом файле есть товары 1,2,3. У товара 1 аналог - товар 3. Видно,что количество дней наличия на складе товара 1 с учетом аналога равно 14.
Можно ли подсчитать это количество дней только формулой или всё-таки придется макросом?
 
Нашел решение. Правда, пришлось прибегнуть к добавлению двух вспомогательных столбцов. Итак, суть решения проблемы в следующем:
1. Дабы не усложнять формулу, добавляем два столбца. Один из них считает количество дней наличия товара на складе, второй же - количество дней наличия на складе аналога. В случае, если аналога у товара нет, или аналога в таблице нет (например в 1С товар с нулевым остатком не отображается), то в соответствующую ячейку данного столбца ставится символ "-".
2. Теперь задача упрощается. Вот итоговая формула (см. файл) - {=ЕСЛИ(S2="-";R2;R2+S2-СУММПРОИЗВ(ЕСЛИ(ДВССЫЛ("C"&ПОИСКПОЗ(B2;A:A)&":"&"Q"&ПОИСКПОЗ(B2;A:A))>0;1;0);ЕСЛИ(C2:Q2>0;1;0)))}
Сначала проверяется есть ли у товара аналог и присутствует ли он в таблице, если "нет", то берется количество дней наличия товара на складе. Если есть аналог и он присутствует в таблице, то ищется диапазон ячеек, относящихся к аналогу, затем с помощью функции "ДВССЫЛ" он преобразовывается в ссылку, с помощью функции "СУММПРОИЗВ" вычисляется количество совпадений указанных диапазонов. Это количество отнимается от количества дней наличия аналога,тем самым мы получаем уникальное количество дней наличия на складе аналога. Остается только прибавить это число к количеству дней наличия товара на складе.


Буду признателен, если кто-то сможет упростить формулу.
Страницы: 1
Читают тему (гостей: 1)
Наверх