Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчет кол-ва шт. позиции в накладных в одной вкладке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Подсчет кол-ва шт. позиции в накладных в одной вкладке
johny_b Дата: Понедельник, 08.07.2024, 22:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Мастера, помогите разобраться. Есть вкладка в которой каждая последующая накладная помещается под предыдущей. Эдакая портянка из накладных.
В форме каждой накладной есть фиксированная ячейка с датой накладной.
Далее есть перечень наименования и кол-ва.

Мне необходима формула, которая будет подсчитывать кол-во наименования в заданном временном диапазоне.

Пробовал использовать СУММЕСЛИМН:
Код
=СУММЕСЛИМН(P:P;D:D;"Наименование";A:A;">31.05.2024";A:A;"<01.07.2024")

Но эта формула работает только если с наименованием в одной строчке есть дата.
В моём случае дата всегда вверху накладной.
К сообщению приложен файл: podschet.xlsx (17.6 Kb)
 
Ответить
СообщениеМастера, помогите разобраться. Есть вкладка в которой каждая последующая накладная помещается под предыдущей. Эдакая портянка из накладных.
В форме каждой накладной есть фиксированная ячейка с датой накладной.
Далее есть перечень наименования и кол-ва.

Мне необходима формула, которая будет подсчитывать кол-во наименования в заданном временном диапазоне.

Пробовал использовать СУММЕСЛИМН:
Код
=СУММЕСЛИМН(P:P;D:D;"Наименование";A:A;">31.05.2024";A:A;"<01.07.2024")

Но эта формула работает только если с наименованием в одной строчке есть дата.
В моём случае дата всегда вверху накладной.

Автор - johny_b
Дата добавления - 08.07.2024 в 22:40
Hugo Дата: Понедельник, 08.07.2024, 23:19 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
подсчитывать кол-во наименования в заданном временном диапазоне
- непонятно.
В файле 3 раза напильник - это одно наименование, или три? Или 15?
Как по вопросу - ответ 1
И что с временным диапазоном - зачем упоминать, если нет никакого намёка откуда его брать, этот диапазон?
Я бы UDF сочинял, если бы была такая задача.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение
подсчитывать кол-во наименования в заданном временном диапазоне
- непонятно.
В файле 3 раза напильник - это одно наименование, или три? Или 15?
Как по вопросу - ответ 1
И что с временным диапазоном - зачем упоминать, если нет никакого намёка откуда его брать, этот диапазон?
Я бы UDF сочинял, если бы была такая задача.

Автор - Hugo
Дата добавления - 08.07.2024 в 23:19
johny_b Дата: Вторник, 09.07.2024, 00:36 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Извиняюсь, сделал больше позиций для примера.
В данном примере мне требуется посчитать сколько напильников было во всех накладных за июнь месяц.
Дата накладной сверху слева в заголовке.
К сообщению приложен файл: 1698598.xlsx (18.4 Kb)
 
Ответить
СообщениеИзвиняюсь, сделал больше позиций для примера.
В данном примере мне требуется посчитать сколько напильников было во всех накладных за июнь месяц.
Дата накладной сверху слева в заголовке.

Автор - johny_b
Дата добавления - 09.07.2024 в 00:36
Hugo Дата: Вторник, 09.07.2024, 08:59 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Написал как просили чуть выше, если подход годится то можно расширить чтоб можно было указывать диапазон дат, а не только месяц индексом:
[vba]
Код

Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств)
Dim i&, d As Date

ДиапазонДат = ДиапазонДат.Value
ДиапазонНаименований = ДиапазонНаименований.Value
ДиапазонКоличеств = ДиапазонКоличеств.Value

For i = 1 To UBound(ДиапазонДат)
If ДиапазонДат(i, 1) > 1 Then
If IsDate(ДиапазонДат(i, 1)) Then d = ДиапазонДат(i, 1)
End If

If Month(d) = НужныйМесяц Then
If ДиапазонНаименований(i, 1) = Наименование Then jonny_b = jonny_b + ДиапазонКоличеств(i, 1)
End If

Next
End Function
[/vba]
Применить можно так:


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНаписал как просили чуть выше, если подход годится то можно расширить чтоб можно было указывать диапазон дат, а не только месяц индексом:
[vba]
Код

Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств)
Dim i&, d As Date

ДиапазонДат = ДиапазонДат.Value
ДиапазонНаименований = ДиапазонНаименований.Value
ДиапазонКоличеств = ДиапазонКоличеств.Value

For i = 1 To UBound(ДиапазонДат)
If ДиапазонДат(i, 1) > 1 Then
If IsDate(ДиапазонДат(i, 1)) Then d = ДиапазонДат(i, 1)
End If

If Month(d) = НужныйМесяц Then
If ДиапазонНаименований(i, 1) = Наименование Then jonny_b = jonny_b + ДиапазонКоличеств(i, 1)
End If

Next
End Function
[/vba]
Применить можно так:

Автор - Hugo
Дата добавления - 09.07.2024 в 08:59
johny_b Дата: Вторник, 09.07.2024, 21:28 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Отлично подошло) Благодарю)
Обратил внимание, что формула получается весьма ресурсоёмка. На большом документе всё работает, но требует времени на просчёт.
 
Ответить
СообщениеОтлично подошло) Благодарю)
Обратил внимание, что формула получается весьма ресурсоёмка. На большом документе всё работает, но требует времени на просчёт.

Автор - johny_b
Дата добавления - 09.07.2024 в 21:28
Hugo Дата: Вторник, 09.07.2024, 22:23 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Обратил внимание, что формула получается весьма ресурсоёмка.


Можно ускорить - Month(d) высчитывать один раз когда встречается дата, что-то я тупанул...
В остальном должно работать быстро, там всё на массивах.
[vba]
Код
Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств)
Dim i&, d&

ДиапазонДат = ДиапазонДат.Value
ДиапазонНаименований = ДиапазонНаименований.Value
ДиапазонКоличеств = ДиапазонКоличеств.Value

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]

Можно доработать чтоб работало именнно с датами, а не с индексом месяца, если важен например и год, а может диапазон дат понадобится - например за квартал


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Вторник, 09.07.2024, 23:22
 
Ответить
Сообщение
Обратил внимание, что формула получается весьма ресурсоёмка.


Можно ускорить - Month(d) высчитывать один раз когда встречается дата, что-то я тупанул...
В остальном должно работать быстро, там всё на массивах.
[vba]
Код
Function jonny_b(ДиапазонДат, НужныйМесяц, ДиапазонНаименований, Наименование, ДиапазонКоличеств)
Dim i&, d&

ДиапазонДат = ДиапазонДат.Value
ДиапазонНаименований = ДиапазонНаименований.Value
ДиапазонКоличеств = ДиапазонКоличеств.Value

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
Дата добавления - 09.07.2024 в 22:23
johny_b Дата: Среда, 10.07.2024, 00:04 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Обновил код, стало быстрее. Спасибо.
Где-то пару секунд думает когда значения в накладной меняешь, а потом всё ок.

Если будет учитывать год, будет вообще шикарно.
 
Ответить
СообщениеОбновил код, стало быстрее. Спасибо.
Где-то пару секунд думает когда значения в накладной меняешь, а потом всё ок.

Если будет учитывать год, будет вообще шикарно.

Автор - johny_b
Дата добавления - 10.07.2024 в 00:04
Hugo Дата: Среда, 10.07.2024, 12:42 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Если будет учитывать год, будет вообще шикарно.

- это не сложно добавить.
Но расскажите всю задачу - Вам нужно всегда подсчитывать количество только одного наименования, или может быть есть столбик на 1000 разных и количество нужно поставить рядом?
Никогда не будет так что нужно будет отобрать за период - например за неделю, или квартал? Или всегда будет только отбор строго за месяц некоего года?
Потому что если нужно считать сразу на 1000 - это можно сделать одной формулой, а не тысячью - будет в 1000 раз быстрее.
И если не нужно проверять на период - это тоже быстрее...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение
Если будет учитывать год, будет вообще шикарно.

- это не сложно добавить.
Но расскажите всю задачу - Вам нужно всегда подсчитывать количество только одного наименования, или может быть есть столбик на 1000 разных и количество нужно поставить рядом?
Никогда не будет так что нужно будет отобрать за период - например за неделю, или квартал? Или всегда будет только отбор строго за месяц некоего года?
Потому что если нужно считать сразу на 1000 - это можно сделать одной формулой, а не тысячью - будет в 1000 раз быстрее.
И если не нужно проверять на период - это тоже быстрее...

Автор - Hugo
Дата добавления - 10.07.2024 в 12:42
Nic70y Дата: Среда, 10.07.2024, 13:10 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 8857
Репутация: 2308 ±
Замечаний: 0% ±

Excel 2010
Но расскажите всю задачу

+ интересует вопрос, тип каких данных будет в графе счет, субсчет?


ЮMoney 41001841029809
 
Ответить
Сообщение
Но расскажите всю задачу

+ интересует вопрос, тип каких данных будет в графе счет, субсчет?

Автор - Nic70y
Дата добавления - 10.07.2024 в 13:10
johny_b Дата: Среда, 10.07.2024, 22:00 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Но расскажите всю задачу

У каждой позиции есть лимит, который можно выписать в месяц.
Основная задача - подсчет выписанных наименований за определенный месяц.
У меня добавлена вкладка, где в формате таблицы я подсчитываю сколько выписано той или иной позиции в месяц у порядка 25 наименований.

Для каждого отдельного наименования я подставляю эту формулу, в которой заменяю текст наименования в формуле.

+ интересует вопрос, тип каких данных будет в графе счет, субсчет?

Счет, субсчёт не используем.

Прикрепил уменьшенный образец текущего использования.
К сообщению приложен файл: test2.xlsm (41.8 Kb)


Сообщение отредактировал johny_b - Среда, 10.07.2024, 22:01
 
Ответить
Сообщение
Но расскажите всю задачу

У каждой позиции есть лимит, который можно выписать в месяц.
Основная задача - подсчет выписанных наименований за определенный месяц.
У меня добавлена вкладка, где в формате таблицы я подсчитываю сколько выписано той или иной позиции в месяц у порядка 25 наименований.

Для каждого отдельного наименования я подставляю эту формулу, в которой заменяю текст наименования в формуле.

+ интересует вопрос, тип каких данных будет в графе счет, субсчет?

Счет, субсчёт не используем.

Прикрепил уменьшенный образец текущего использования.

Автор - johny_b
Дата добавления - 10.07.2024 в 22:00
Hugo Дата: Среда, 10.07.2024, 22:33 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Для каждого отдельного наименования я подставляю эту формулу
- ну как я и предполагал - можно (если написать чуть другой код) рядом с списком сразу вбить ОДНУ формулу в диапазон D3:D7 и получить результат, а с динамическими массивами достаточно её вбить в D3.
Но нужен другой код.
А вместо 7 можно писать ссылку на месяц, и вместо названия ссылку на ячейку, и тормоза не из-за кода, а потому что формулу ввели не как я писал, а на целиком столбцы (хотя это можно в коде учесть)
Пишите так:
Код
=ТРЕБМН(Требования!$A$1:$A$200;МЕСЯЦ($C$1);Требования!$D$1:$D$200;A3;Требования!$P$1:$P$200)

и тяните вниз.
А массивную завтра наверное напишу, хотя на десяток строки и эта не будет тормозить


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение
Для каждого отдельного наименования я подставляю эту формулу
- ну как я и предполагал - можно (если написать чуть другой код) рядом с списком сразу вбить ОДНУ формулу в диапазон D3:D7 и получить результат, а с динамическими массивами достаточно её вбить в D3.
Но нужен другой код.
А вместо 7 можно писать ссылку на месяц, и вместо названия ссылку на ячейку, и тормоза не из-за кода, а потому что формулу ввели не как я писал, а на целиком столбцы (хотя это можно в коде учесть)
Пишите так:
Код
=ТРЕБМН(Требования!$A$1:$A$200;МЕСЯЦ($C$1);Требования!$D$1:$D$200;A3;Требования!$P$1:$P$200)

и тяните вниз.
А массивную завтра наверное напишу, хотя на десяток строки и эта не будет тормозить

Автор - Hugo
Дата добавления - 10.07.2024 в 22:33
Hugo Дата: Среда, 10.07.2024, 22:44 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Чуть подправил файл - эта версия кода работает быстро и с целыми столбцами. Только насколько помню так не будет работать с другой закрытой книгой.
К сообщению приложен файл: test2_2.xlsm (44.4 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧуть подправил файл - эта версия кода работает быстро и с целыми столбцами. Только насколько помню так не будет работать с другой закрытой книгой.

Автор - Hugo
Дата добавления - 10.07.2024 в 22:44
johny_b Дата: Среда, 10.07.2024, 23:14 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

2016
Спасибо, скорость прилично возросла в таком варианте, все подлагивания ушли.
 
Ответить
СообщениеСпасибо, скорость прилично возросла в таком варианте, все подлагивания ушли.

Автор - johny_b
Дата добавления - 10.07.2024 в 23:14
Hugo Дата: Среда, 10.07.2024, 23:15 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Всёж уже и массивную написал, осталось с датами если нужно разобраться, хотя вроде и не нужно ))
К сообщению приложен файл: trebmnmassiv_i_nemassivnaja_v_.xlsm (47.3 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВсёж уже и массивную написал, осталось с датами если нужно разобраться, хотя вроде и не нужно ))

Автор - Hugo
Дата добавления - 10.07.2024 в 23:15
Hugo Дата: Среда, 10.07.2024, 23:21 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Кстати может быть нужно ещё и подстраховаться и проверять шт там или вдруг краска где-то в литрах, но вот только что делать если вдруг что-то не нашлось и в итоге не учлось, но оно было...
Или тогда список делать типа
Краска белая шт.
Краска белая л.
Краска синяя шт.
Краска синяя л.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеКстати может быть нужно ещё и подстраховаться и проверять шт там или вдруг краска где-то в литрах, но вот только что делать если вдруг что-то не нашлось и в итоге не учлось, но оно было...
Или тогда список делать типа
Краска белая шт.
Краска белая л.
Краска синяя шт.
Краска синяя л.

Автор - Hugo
Дата добавления - 10.07.2024 в 23:21
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!