помогите доработать формулу или др. вариант решения в таблице
на листе инв_н (строка 5) нужно посчитать количество товаров из группы товаров, в каждом заказе (из листа 23122021) по названию. для этого есть переходник лист СПР В одном заказе (одна ячейка) может быть два одинаковых товара.
Дорогие форумчане, поздравлю вас с наступающим Новым годом, очень надеюсь, что и в этот раз вы мне поможете.
помогите доработать формулу или др. вариант решения в таблице
на листе инв_н (строка 5) нужно посчитать количество товаров из группы товаров, в каждом заказе (из листа 23122021) по названию. для этого есть переходник лист СПР В одном заказе (одна ячейка) может быть два одинаковых товара.
Дорогие форумчане, поздравлю вас с наступающим Новым годом, очень надеюсь, что и в этот раз вы мне поможете.
Вот ведь, оказывается, не зря несколько дней назад потратил время здесь на вторую формулу (хоть вы ее и не просили). Следуя же основным принципам той формулы, сегодня родилось похожее творение - для ячейки E5 листа "ИНВ_Н": [vba]
[/vba] Ну, а сейчас должно захватить дух - эта формула (достаточный монстр!) может еще и саморасширяться по строке! Для этого всего лишь надо дописать к одинокому адресу E$2 вторую границу диапазона - E$2:L$2: [vba]
[/vba] Формулу также надо ввести в ячейку E5 и обязательно удалить формулы правее этой ячейки, т.е. очистить диапазон F5:L5, чтобы вводимая формула могла саморасшириться по пятой строке.
[p.s.]В предыдущей формуле два условия по датам для FILTER можно заменить одним, используя функцию ISBETWEEN (перевод, если сделают, наверное, будет какой-нибудь "емежду"):[/p.s.] [vba]
[/vba]Не могу сказать, что получается сильно короче, а главное - не получается сильно понятнее (ибо надо изучить параметры). Но если новые функции добавляют, значит, "это кому-нибудь нужно" и, значит, надо их изучать и использовать.
Вот ведь, оказывается, не зря несколько дней назад потратил время здесь на вторую формулу (хоть вы ее и не просили). Следуя же основным принципам той формулы, сегодня родилось похожее творение - для ячейки E5 листа "ИНВ_Н": [vba]
[/vba] Ну, а сейчас должно захватить дух - эта формула (достаточный монстр!) может еще и саморасширяться по строке! Для этого всего лишь надо дописать к одинокому адресу E$2 вторую границу диапазона - E$2:L$2: [vba]
[/vba] Формулу также надо ввести в ячейку E5 и обязательно удалить формулы правее этой ячейки, т.е. очистить диапазон F5:L5, чтобы вводимая формула могла саморасшириться по пятой строке.
[p.s.]В предыдущей формуле два условия по датам для FILTER можно заменить одним, используя функцию ISBETWEEN (перевод, если сделают, наверное, будет какой-нибудь "емежду"):[/p.s.] [vba]
[/vba]Не могу сказать, что получается сильно короче, а главное - не получается сильно понятнее (ибо надо изучить параметры). Но если новые функции добавляют, значит, "это кому-нибудь нужно" и, значит, надо их изучать и использовать.Gustav
Gustav, почему то первый мой ответ с благодарностью не отправился (( хочу сказать большое спасибо ))) Появилось несколько вопросов по формуле 1. в формуле фильтр используется <D5+1 почему не <=D5 2. зачем удаляются символы " \([^()]*\)" 3. зачем функцией трансп меняем столбцы и строки местами
А так же, в формулу мне нужно добавить условие, чтобы номер заказа не был равен НЕТ. меняю суммесли на суммесимн и добавляю в конец '(23122021)'!B:B"<>"&$F$1. формула выдает ошибку Синтаксическая ошибка в формуле. как быть?
Gustav, почему то первый мой ответ с благодарностью не отправился (( хочу сказать большое спасибо ))) Появилось несколько вопросов по формуле 1. в формуле фильтр используется <D5+1 почему не <=D5 2. зачем удаляются символы " \([^()]*\)" 3. зачем функцией трансп меняем столбцы и строки местами
А так же, в формулу мне нужно добавить условие, чтобы номер заказа не был равен НЕТ. меняю суммесли на суммесимн и добавляю в конец '(23122021)'!B:B"<>"&$F$1. формула выдает ошибку Синтаксическая ошибка в формуле. как быть?bonnylee
1. в формуле фильтр используется <D5+1 почему не <=D5
Потому что на листе "(23122021)" даты заказа содержат дату и время, а условия на листе "ИНВ_Н" - только дату. Поэтому если задать верхнюю границу периода условием "<= 14.03.21", то на это условие за 14-е число можно будет поймать только полуночный заказ с датой "14.03.21 00:00:00". А при условии "< 14.03.21 + 1(день)", т.е. фактически "< 15.03.21" - все заказы за 14-е число вплоть до момента времени "14.03.21 23:59:59"
Это не "символы для удаления", а шаблон регулярного выражения (нужно погуглить про них, если раньше не сталкивались). С помощью этого шаблона функция REGEXREPLACE вычищает (виртуально) из ячеек текст в скобках, включая сами скобки, т.е. было ' "Русское Лубок" (арт. 2000000002057)' - стало ' "Русское Лубок"'.
3. зачем функцией трансп меняем столбцы и строки местами
Чтобы на листе "СПР" пользоваться функцией ВПР (VLOOKUP), поскольку данные для поиска на этом листе расположены "вертикально" в двух столбцах, а массив, возвращаемый комбинацией функций SPLIT/JOIN, имеет горизонтальную ориентацию. Можно не разворачивать этот горизонтальный массив и использовать функцию ГПР (HLOOKUP), но тогда придётся развернуть (виртуально) данные листа "СПР", т.е. функция TRANSPOSE просто переедет в другое место формулы (см. пример ниже).
Это условие в рассматриваемом примере проще всего внести в функцию FILTER (наряду с условиями по датам).
Итого, с заменой направления виртуального поиска и с внесением дополнительного условия в FILTER, наша формула приобретает (или может приобрести) следующий вид: [vba]
[/vba] В дополнение к этим объяснениям посмотрите по ссылке из сообщения №3 мои комментарии по работе второй формулы из предыдущей вашей темы. Там довольно подробно всё описано.
1. в формуле фильтр используется <D5+1 почему не <=D5
Потому что на листе "(23122021)" даты заказа содержат дату и время, а условия на листе "ИНВ_Н" - только дату. Поэтому если задать верхнюю границу периода условием "<= 14.03.21", то на это условие за 14-е число можно будет поймать только полуночный заказ с датой "14.03.21 00:00:00". А при условии "< 14.03.21 + 1(день)", т.е. фактически "< 15.03.21" - все заказы за 14-е число вплоть до момента времени "14.03.21 23:59:59"
Это не "символы для удаления", а шаблон регулярного выражения (нужно погуглить про них, если раньше не сталкивались). С помощью этого шаблона функция REGEXREPLACE вычищает (виртуально) из ячеек текст в скобках, включая сами скобки, т.е. было ' "Русское Лубок" (арт. 2000000002057)' - стало ' "Русское Лубок"'.
3. зачем функцией трансп меняем столбцы и строки местами
Чтобы на листе "СПР" пользоваться функцией ВПР (VLOOKUP), поскольку данные для поиска на этом листе расположены "вертикально" в двух столбцах, а массив, возвращаемый комбинацией функций SPLIT/JOIN, имеет горизонтальную ориентацию. Можно не разворачивать этот горизонтальный массив и использовать функцию ГПР (HLOOKUP), но тогда придётся развернуть (виртуально) данные листа "СПР", т.е. функция TRANSPOSE просто переедет в другое место формулы (см. пример ниже).
Это условие в рассматриваемом примере проще всего внести в функцию FILTER (наряду с условиями по датам).
Итого, с заменой направления виртуального поиска и с внесением дополнительного условия в FILTER, наша формула приобретает (или может приобрести) следующий вид: [vba]
[/vba] В дополнение к этим объяснениям посмотрите по ссылке из сообщения №3 мои комментарии по работе второй формулы из предыдущей вашей темы. Там довольно подробно всё описано.Gustav