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

Вход

Регистрация

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

 

= Мир MS Excel/фильтр и подсчет объемов продукции(Значений) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
фильтр и подсчет объемов продукции(Значений)
novichok0417 Дата: Четверг, 09.03.2023, 14:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Приветствую форумчане.
Появилась идея создать в ексель своего рода фильтр и подсчет объемов продукции. Причем продукция может поворятся и может находится в разных ячейках (в данном листе).
Подскажите пожалуйста куда нужно копать? Есть возможность реализовать данную процедуру с помощью формул в екселе или уже стоит переходить в VBA??
К сообщению приложен файл: 7020600.xlsx (8.4 Kb)
 
Ответить
СообщениеПриветствую форумчане.
Появилась идея создать в ексель своего рода фильтр и подсчет объемов продукции. Причем продукция может поворятся и может находится в разных ячейках (в данном листе).
Подскажите пожалуйста куда нужно копать? Есть возможность реализовать данную процедуру с помощью формул в екселе или уже стоит переходить в VBA??

Автор - novichok0417
Дата добавления - 09.03.2023 в 14:32
китин Дата: Четверг, 09.03.2023, 14:35 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7029
Репутация: 1078 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а вдруг прокатит?
Код
=СЧЁТЕСЛИ($B$2:$E$4;B7)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа вдруг прокатит?
Код
=СЧЁТЕСЛИ($B$2:$E$4;B7)

Автор - китин
Дата добавления - 09.03.2023 в 14:35
Serge_007 Дата: Четверг, 09.03.2023, 14:41 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
уже стоит переходить в VBA?
Чего мелочится - переходите сразу на низкоуровневые языки :D

Код
=СУММПРОИЗВ(--(B$2:E$4=B7))


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
уже стоит переходить в VBA?
Чего мелочится - переходите сразу на низкоуровневые языки :D

Код
=СУММПРОИЗВ(--(B$2:E$4=B7))

Автор - Serge_007
Дата добавления - 09.03.2023 в 14:41
novichok0417 Дата: Четверг, 09.03.2023, 15:23 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, Спасибо за формулу подсчета количества значений, а есть формула фильтрации значений (Продукт "А", Продукт "Б", Продукт "В")??. Значений в таблице бывает много доходит больше 500(пятиста) каждый раз лезть в фильтр не хотелось бы. В просторах интернета читал что пользуются формулой ИНДЕКС, но так и не разобрался в ней что да как.
 
Ответить
СообщениеSerge_007, Спасибо за формулу подсчета количества значений, а есть формула фильтрации значений (Продукт "А", Продукт "Б", Продукт "В")??. Значений в таблице бывает много доходит больше 500(пятиста) каждый раз лезть в фильтр не хотелось бы. В просторах интернета читал что пользуются формулой ИНДЕКС, но так и не разобрался в ней что да как.

Автор - novichok0417
Дата добавления - 09.03.2023 в 15:23
Serge_007 Дата: Четверг, 09.03.2023, 15:27 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
формула фильтрации значений
Что это такое?

Может это Извлечение уникальных значений формулами надо?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
формула фильтрации значений
Что это такое?

Может это Извлечение уникальных значений формулами надо?

Автор - Serge_007
Дата добавления - 09.03.2023 в 15:27
novichok0417 Дата: Четверг, 09.03.2023, 15:31 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, ну грубо говоря получить стобец значений (Продукт "А", Продукт "Б", Продукт "В")
 
Ответить
СообщениеSerge_007, ну грубо говоря получить стобец значений (Продукт "А", Продукт "Б", Продукт "В")

Автор - novichok0417
Дата добавления - 09.03.2023 в 15:31
Serge_007 Дата: Четверг, 09.03.2023, 15:34 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
получить стобец значений
Из чего и по каким критериям должен получится этот столбец ?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
получить стобец значений
Из чего и по каким критериям должен получится этот столбец ?

Автор - Serge_007
Дата добавления - 09.03.2023 в 15:34
novichok0417 Дата: Четверг, 09.03.2023, 15:36 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, то самое, вот только данная формула может работать не только со столбцом значений, а допустим с массивом как в примере Ексель??
 
Ответить
СообщениеSerge_007, то самое, вот только данная формула может работать не только со столбцом значений, а допустим с массивом как в примере Ексель??

Автор - novichok0417
Дата добавления - 09.03.2023 в 15:36
novichok0417 Дата: Четверг, 09.03.2023, 15:37 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, без критерий, какие есть значения без повторений


Сообщение отредактировал novichok0417 - Четверг, 09.03.2023, 15:39
 
Ответить
СообщениеSerge_007, без критерий, какие есть значения без повторений

Автор - novichok0417
Дата добавления - 09.03.2023 в 15:37
Serge_007 Дата: Четверг, 09.03.2023, 16:49 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
с массивом как в примере Ексель
Можно
Но если у Вас уникальных
значений в таблице ... больше 500(пятиста)
, то формула будет ну очень долго думать :)

Поэтому - предлагаю макросом (см. вложение):
[vba]
Код
Sub novichok0417()
Dim rR As Range
Dim LisT As Long
    For Each rR In Range("b2:e4")
        LisT = Cells(Rows.Count, "b").End(xlUp).Row + 1
            If rR.Application.WorksheetFunction.CountIf(Range("b7:e" & LisT), rR) = 0 Then
                Range("b" & LisT) = rR
                Range("c" & LisT) = rR.Application.WorksheetFunction.CountIf(Range("b2:e4"), rR)
            End If
     Next rR
End Sub
[/vba]
К сообщению приложен файл: 20230309_novichok0417.xls (35.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
с массивом как в примере Ексель
Можно
Но если у Вас уникальных
значений в таблице ... больше 500(пятиста)
, то формула будет ну очень долго думать :)

Поэтому - предлагаю макросом (см. вложение):
[vba]
Код
Sub novichok0417()
Dim rR As Range
Dim LisT As Long
    For Each rR In Range("b2:e4")
        LisT = Cells(Rows.Count, "b").End(xlUp).Row + 1
            If rR.Application.WorksheetFunction.CountIf(Range("b7:e" & LisT), rR) = 0 Then
                Range("b" & LisT) = rR
                Range("c" & LisT) = rR.Application.WorksheetFunction.CountIf(Range("b2:e4"), rR)
            End If
     Next rR
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 09.03.2023 в 16:49
novichok0417 Дата: Четверг, 09.03.2023, 19:18 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, СПАСИБО hands hands
 
Ответить
СообщениеSerge_007, СПАСИБО hands hands

Автор - novichok0417
Дата добавления - 09.03.2023 в 19:18
novichok0417 Дата: Понедельник, 13.03.2023, 20:12 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, Можно еще такой вопрос?
Можно ли вывести подсчет на второй лист?? Потому что количество продукции каждый месяц предоставляется в разном количестве(может быть от нескольких десятков, до сотен).
По предыдущему макросу в принципе все понятно, можно ли ввести диапазон обработки исходных данных весь лист(а не конкретный диапазон)?
К сообщению приложен файл: 8653241.xlsx (10.8 Kb)
 
Ответить
СообщениеSerge_007, Можно еще такой вопрос?
Можно ли вывести подсчет на второй лист?? Потому что количество продукции каждый месяц предоставляется в разном количестве(может быть от нескольких десятков, до сотен).
По предыдущему макросу в принципе все понятно, можно ли ввести диапазон обработки исходных данных весь лист(а не конкретный диапазон)?

Автор - novichok0417
Дата добавления - 13.03.2023 в 20:12
Serge_007 Дата: Вторник, 14.03.2023, 10:17 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
вывести подсчет на второй лист?
См. вложение

можно ли ввести диапазон обработки исходных данных весь лист(а не конкретный диапазон)?
Весь лист - это тоже конкретный диапазон ;)

Немного изменил макрос
Теперь диапазон обработки автоматически изменяется от количества заполненных строк и столбцов на листе "Исходные данные":[vba]
Код
Sub novichok0417_2()
Dim rR As Range
Dim LisT&, H&, V&
    V = Sheets("Исходные данные").Cells(Rows.Count, "a").End(xlUp).Row
    H = Sheets("Исходные данные").Cells(1, Columns.Count).End(xlToLeft).Column
        For Each rR In Sheets("Исходные данные").Range(Cells(1, 1), Cells(V, H))
            LisT = Sheets("Расчет").Cells(Rows.Count, "a").End(xlUp).Row + 1
                If rR.Application.WorksheetFunction.CountIf(Sheets("Расчет").Range("a2:a" & LisT), rR) = 0 Then
                    Sheets("Расчет").Range("a" & LisT) = rR
                    Sheets("Расчет").Range("b" & LisT) = Application.WorksheetFunction.CountIf(Sheets("Исходные данные").Range(Cells(1, 1), Cells(V, H)), rR)
                End If
        Next rR
    Sheets("Расчет").Activate
    Cells(1, 3) = "Всего: " & WorksheetFunction.Sum(Range(Cells(2, 2), Cells(LisT, 2)))
End Sub
[/vba]
К сообщению приложен файл: 20230314_novichok0417.xls (52.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
вывести подсчет на второй лист?
См. вложение

можно ли ввести диапазон обработки исходных данных весь лист(а не конкретный диапазон)?
Весь лист - это тоже конкретный диапазон ;)

Немного изменил макрос
Теперь диапазон обработки автоматически изменяется от количества заполненных строк и столбцов на листе "Исходные данные":[vba]
Код
Sub novichok0417_2()
Dim rR As Range
Dim LisT&, H&, V&
    V = Sheets("Исходные данные").Cells(Rows.Count, "a").End(xlUp).Row
    H = Sheets("Исходные данные").Cells(1, Columns.Count).End(xlToLeft).Column
        For Each rR In Sheets("Исходные данные").Range(Cells(1, 1), Cells(V, H))
            LisT = Sheets("Расчет").Cells(Rows.Count, "a").End(xlUp).Row + 1
                If rR.Application.WorksheetFunction.CountIf(Sheets("Расчет").Range("a2:a" & LisT), rR) = 0 Then
                    Sheets("Расчет").Range("a" & LisT) = rR
                    Sheets("Расчет").Range("b" & LisT) = Application.WorksheetFunction.CountIf(Sheets("Исходные данные").Range(Cells(1, 1), Cells(V, H)), rR)
                End If
        Next rR
    Sheets("Расчет").Activate
    Cells(1, 3) = "Всего: " & WorksheetFunction.Sum(Range(Cells(2, 2), Cells(LisT, 2)))
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 14.03.2023 в 10:17
novichok0417 Дата: Вторник, 14.03.2023, 18:04 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, если удалить значения с B1 по U1 то расчет ведется только по столбцу А(аналогично если удалить знакчения в диапазоне C1 по U1, то расчет ведется только по столбцам А и В). Получается что диапазон обработки автоматически изменяется от количества заполненных столбцов в первой строке на листе "Исходные данные".
К сообщению приложен файл: 2023_03_14_primer.xls (49.5 Kb)
 
Ответить
СообщениеSerge_007, если удалить значения с B1 по U1 то расчет ведется только по столбцу А(аналогично если удалить знакчения в диапазоне C1 по U1, то расчет ведется только по столбцам А и В). Получается что диапазон обработки автоматически изменяется от количества заполненных столбцов в первой строке на листе "Исходные данные".

Автор - novichok0417
Дата добавления - 14.03.2023 в 18:04
Serge_007 Дата: Среда, 15.03.2023, 09:17 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
диапазон обработки автоматически изменяется от количества заполненных столбцов в первой строке на листе "Исходные данные"
Да
За это отвечает вот эта строка кода: [vba]
Код
H = Sheets("Исходные данные").Cells(1, Columns.Count).End(xlToLeft).Column
[/vba]
Если считать нужно не по первой строке, то замените число 1 в этой строке на число нужной Вам строки листа Excel


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
диапазон обработки автоматически изменяется от количества заполненных столбцов в первой строке на листе "Исходные данные"
Да
За это отвечает вот эта строка кода: [vba]
Код
H = Sheets("Исходные данные").Cells(1, Columns.Count).End(xlToLeft).Column
[/vba]
Если считать нужно не по первой строке, то замените число 1 в этой строке на число нужной Вам строки листа Excel

Автор - Serge_007
Дата добавления - 15.03.2023 в 09:17
novichok0417 Дата: Среда, 15.03.2023, 10:52 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, извините, некорректно задал вопрос :'(
есть ситуации, когда какая-нибудь из ячеек будет пустой, в итоге макрос не будет выполнять подсчет значений в пустых ячейках(а следовательно и в столбцах) см.приложенный файл. (в строке введены значения A1 и E1, в итоге макрос считает все значения в столбцах с A по E, значения введеные в ячейках B2:U32 макрос игнорирует).
В принципе можно в первом и последнем столбце в 1ой строке (в данном примере поставить любую цифру) чтобы макрос считал все столбцы листа "Исходные данные", но данное решение приводит к увеличению времени подсчета(и даже зависанию ексель).
К сообщению приложен файл: 2023_03_15_primer.xls (49.5 Kb)
 
Ответить
СообщениеSerge_007, извините, некорректно задал вопрос :'(
есть ситуации, когда какая-нибудь из ячеек будет пустой, в итоге макрос не будет выполнять подсчет значений в пустых ячейках(а следовательно и в столбцах) см.приложенный файл. (в строке введены значения A1 и E1, в итоге макрос считает все значения в столбцах с A по E, значения введеные в ячейках B2:U32 макрос игнорирует).
В принципе можно в первом и последнем столбце в 1ой строке (в данном примере поставить любую цифру) чтобы макрос считал все столбцы листа "Исходные данные", но данное решение приводит к увеличению времени подсчета(и даже зависанию ексель).

Автор - novichok0417
Дата добавления - 15.03.2023 в 10:52
Serge_007 Дата: Среда, 15.03.2023, 11:03 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
сть ситуации, когда какая-нибудь из ячеек будет пустой
Из ваших предыдущих примеров это не следовало...

данное решение приводит к увеличению времени подсчета(и даже зависанию ексель)
Так как в итоге определять какой массив надо обрабатывать?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
сть ситуации, когда какая-нибудь из ячеек будет пустой
Из ваших предыдущих примеров это не следовало...

данное решение приводит к увеличению времени подсчета(и даже зависанию ексель)
Так как в итоге определять какой массив надо обрабатывать?

Автор - Serge_007
Дата добавления - 15.03.2023 в 11:03
  • Страница 1 из 1
  • 1
Поиск:

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