Мастера, помогите разобраться. Есть вкладка в которой каждая последующая накладная помещается под предыдущей. Эдакая портянка из накладных. В форме каждой накладной есть фиксированная ячейка с датой накладной. Далее есть перечень наименования и кол-ва.
Мне необходима формула, которая будет подсчитывать кол-во наименования в заданном временном диапазоне.
Но эта формула работает только если с наименованием в одной строчке есть дата. В моём случае дата всегда вверху накладной.
Мастера, помогите разобраться. Есть вкладка в которой каждая последующая накладная помещается под предыдущей. Эдакая портянка из накладных. В форме каждой накладной есть фиксированная ячейка с датой накладной. Далее есть перечень наименования и кол-ва.
Мне необходима формула, которая будет подсчитывать кол-во наименования в заданном временном диапазоне.
подсчитывать кол-во наименования в заданном временном диапазоне
- непонятно. В файле 3 раза напильник - это одно наименование, или три? Или 15? Как по вопросу - ответ 1 И что с временным диапазоном - зачем упоминать, если нет никакого намёка откуда его брать, этот диапазон? Я бы UDF сочинял, если бы была такая задача.
подсчитывать кол-во наименования в заданном временном диапазоне
- непонятно. В файле 3 раза напильник - это одно наименование, или три? Или 15? Как по вопросу - ответ 1 И что с временным диапазоном - зачем упоминать, если нет никакого намёка откуда его брать, этот диапазон? Я бы UDF сочинял, если бы была такая задача.Hugo
Извиняюсь, сделал больше позиций для примера. В данном примере мне требуется посчитать сколько напильников было во всех накладных за июнь месяц. Дата накладной сверху слева в заголовке.
Извиняюсь, сделал больше позиций для примера. В данном примере мне требуется посчитать сколько напильников было во всех накладных за июнь месяц. Дата накладной сверху слева в заголовке.johny_b
Отлично подошло) Благодарю) Обратил внимание, что формула получается весьма ресурсоёмка. На большом документе всё работает, но требует времени на просчёт.
Отлично подошло) Благодарю) Обратил внимание, что формула получается весьма ресурсоёмка. На большом документе всё работает, но требует времени на просчёт.johny_b
Обратил внимание, что формула получается весьма ресурсоёмка.
Можно ускорить - Month(d) высчитывать один раз когда встречается дата, что-то я тупанул... В остальном должно работать быстро, там всё на массивах. [vba]
Код
Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств) Dim i&, d&
For i = 1 To UBound(ДиапазонДат) If ДиапазонДат(i, 1) > 1 Then If IsDate(ДиапазонДат(i, 1)) Then d = Month(ДиапазонДат(i, 1)) End If
If d = НужныйМесяц Then If ДиапазонНаименований(i, 1) = Наименование Then jonny_b = jonny_b + ДиапазонКоличеств(i, 1) End If Next End Function
[/vba]
Можно доработать чтоб работало именнно с датами, а не с индексом месяца, если важен например и год, а может диапазон дат понадобится - например за квартал
Обратил внимание, что формула получается весьма ресурсоёмка.
Можно ускорить - Month(d) высчитывать один раз когда встречается дата, что-то я тупанул... В остальном должно работать быстро, там всё на массивах. [vba]
Код
Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств) Dim i&, d&
For i = 1 To UBound(ДиапазонДат) If ДиапазонДат(i, 1) > 1 Then If IsDate(ДиапазонДат(i, 1)) Then d = Month(ДиапазонДат(i, 1)) End If
If d = НужныйМесяц Then If ДиапазонНаименований(i, 1) = Наименование Then jonny_b = jonny_b + ДиапазонКоличеств(i, 1) End If Next End Function
[/vba]
Можно доработать чтоб работало именнно с датами, а не с индексом месяца, если важен например и год, а может диапазон дат понадобится - например за кварталHugo
- это не сложно добавить. Но расскажите всю задачу - Вам нужно всегда подсчитывать количество только одного наименования, или может быть есть столбик на 1000 разных и количество нужно поставить рядом? Никогда не будет так что нужно будет отобрать за период - например за неделю, или квартал? Или всегда будет только отбор строго за месяц некоего года? Потому что если нужно считать сразу на 1000 - это можно сделать одной формулой, а не тысячью - будет в 1000 раз быстрее. И если не нужно проверять на период - это тоже быстрее...
- это не сложно добавить. Но расскажите всю задачу - Вам нужно всегда подсчитывать количество только одного наименования, или может быть есть столбик на 1000 разных и количество нужно поставить рядом? Никогда не будет так что нужно будет отобрать за период - например за неделю, или квартал? Или всегда будет только отбор строго за месяц некоего года? Потому что если нужно считать сразу на 1000 - это можно сделать одной формулой, а не тысячью - будет в 1000 раз быстрее. И если не нужно проверять на период - это тоже быстрее...Hugo
У каждой позиции есть лимит, который можно выписать в месяц. Основная задача - подсчет выписанных наименований за определенный месяц. У меня добавлена вкладка, где в формате таблицы я подсчитываю сколько выписано той или иной позиции в месяц у порядка 25 наименований.
Для каждого отдельного наименования я подставляю эту формулу, в которой заменяю текст наименования в формуле.
У каждой позиции есть лимит, который можно выписать в месяц. Основная задача - подсчет выписанных наименований за определенный месяц. У меня добавлена вкладка, где в формате таблицы я подсчитываю сколько выписано той или иной позиции в месяц у порядка 25 наименований.
Для каждого отдельного наименования я подставляю эту формулу, в которой заменяю текст наименования в формуле.
Для каждого отдельного наименования я подставляю эту формулу
- ну как я и предполагал - можно (если написать чуть другой код) рядом с списком сразу вбить ОДНУ формулу в диапазон D3:D7 и получить результат, а с динамическими массивами достаточно её вбить в D3. Но нужен другой код. А вместо 7 можно писать ссылку на месяц, и вместо названия ссылку на ячейку, и тормоза не из-за кода, а потому что формулу ввели не как я писал, а на целиком столбцы (хотя это можно в коде учесть) Пишите так:
Для каждого отдельного наименования я подставляю эту формулу
- ну как я и предполагал - можно (если написать чуть другой код) рядом с списком сразу вбить ОДНУ формулу в диапазон D3:D7 и получить результат, а с динамическими массивами достаточно её вбить в D3. Но нужен другой код. А вместо 7 можно писать ссылку на месяц, и вместо названия ссылку на ячейку, и тормоза не из-за кода, а потому что формулу ввели не как я писал, а на целиком столбцы (хотя это можно в коде учесть) Пишите так:
Кстати может быть нужно ещё и подстраховаться и проверять шт там или вдруг краска где-то в литрах, но вот только что делать если вдруг что-то не нашлось и в итоге не учлось, но оно было... Или тогда список делать типа Краска белая шт. Краска белая л. Краска синяя шт. Краска синяя л.
Кстати может быть нужно ещё и подстраховаться и проверять шт там или вдруг краска где-то в литрах, но вот только что делать если вдруг что-то не нашлось и в итоге не учлось, но оно было... Или тогда список делать типа Краска белая шт. Краска белая л. Краска синяя шт. Краска синяя л.Hugo