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

Вход

Регистрация

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

 

= Мир MS Excel/Вычислить количество изделий - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вычислить количество изделий
company05 Дата: Понедельник, 23.10.2023, 02:36 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

2010
Здравствуйте ! Подскажи пожалуйста , как сделать макрос , чтоб на втором листе отображались фамилии и рядом количество сделанных изделий за определенный месяц.

Пример списка в файле

Спасибо!!!
К сообщению приложен файл: 9804527.png (134.3 Kb)
 
Ответить
СообщениеЗдравствуйте ! Подскажи пожалуйста , как сделать макрос , чтоб на втором листе отображались фамилии и рядом количество сделанных изделий за определенный месяц.

Пример списка в файле

Спасибо!!!

Автор - company05
Дата добавления - 23.10.2023 в 02:36
jun Дата: Понедельник, 23.10.2023, 08:59 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

Добрый день! Без файла угадать сложно, что требуется.
Сделал, как понял.
Код:
[vba]
Код
Sub select_()
Dim d As Object, arr, title, item As String, key As String, s
Dim i As Long, j, lr As Long

Set d = CreateObject("Scripting.Dictionary")

With Worksheets("Лист1") ' имя Лист1 поменять на имя листа с исходными данными
    title = .Cells(1, 1).CurrentRegion.Rows(1).Value ' массив заголовка
    arr = .Cells(1, 1).CurrentRegion.Value ' основной массив
    
    For i = 2 To UBound(arr, 1)
        key = Format(arr(i, 1), "mm.yyyy") & ":" & arr(i, 2) ' сцепляем 2 первых столбца для словаря
        If d.exists(key) Then ' если месяц и фамилия уже есть в словаре, то
            d(key) = d(key) + arr(i, 3) ' прибавляем значение
        Else ' иначе
              d(key) = arr(i, 3) ' записываем значение из 3 столбца
        End If
    Next i
End With

With Worksheets("tmp") ' имя tmp поменять на имя листа с результатом
    .Cells.Clear ' очищаем ячейки на листе
    .Cells(1, 1).Resize(1, UBound(title, 2)) = title ' выгружаем в первую строку заголовок
    lr = 2 ' последняя заполненная строка
    For Each j In d.keys() '  цикл по ключам словаря
        s = Split(j, ":") ' разбиваем ключ с месяцем и ФИО по разделителю :
        .Cells(lr, 1).Resize(1, UBound(s) + 1) = s ' выгружаем в значение s первые 2 столбца
        .Cells(lr, 3) = d(j) ' выгружаем сумму
        lr = lr + 1 ' прибавляем 1 к последней заполненной строке
    Next j
End With
End Sub
[/vba]
К сообщению приложен файл: group_by.xlsb (18.5 Kb)


Сообщение отредактировал jun - Понедельник, 23.10.2023, 09:01
 
Ответить
СообщениеДобрый день! Без файла угадать сложно, что требуется.
Сделал, как понял.
Код:
[vba]
Код
Sub select_()
Dim d As Object, arr, title, item As String, key As String, s
Dim i As Long, j, lr As Long

Set d = CreateObject("Scripting.Dictionary")

With Worksheets("Лист1") ' имя Лист1 поменять на имя листа с исходными данными
    title = .Cells(1, 1).CurrentRegion.Rows(1).Value ' массив заголовка
    arr = .Cells(1, 1).CurrentRegion.Value ' основной массив
    
    For i = 2 To UBound(arr, 1)
        key = Format(arr(i, 1), "mm.yyyy") & ":" & arr(i, 2) ' сцепляем 2 первых столбца для словаря
        If d.exists(key) Then ' если месяц и фамилия уже есть в словаре, то
            d(key) = d(key) + arr(i, 3) ' прибавляем значение
        Else ' иначе
              d(key) = arr(i, 3) ' записываем значение из 3 столбца
        End If
    Next i
End With

With Worksheets("tmp") ' имя tmp поменять на имя листа с результатом
    .Cells.Clear ' очищаем ячейки на листе
    .Cells(1, 1).Resize(1, UBound(title, 2)) = title ' выгружаем в первую строку заголовок
    lr = 2 ' последняя заполненная строка
    For Each j In d.keys() '  цикл по ключам словаря
        s = Split(j, ":") ' разбиваем ключ с месяцем и ФИО по разделителю :
        .Cells(lr, 1).Resize(1, UBound(s) + 1) = s ' выгружаем в значение s первые 2 столбца
        .Cells(lr, 3) = d(j) ' выгружаем сумму
        lr = lr + 1 ' прибавляем 1 к последней заполненной строке
    Next j
End With
End Sub
[/vba]

Автор - jun
Дата добавления - 23.10.2023 в 08:59
company05 Дата: Понедельник, 23.10.2023, 10:22 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

2010
jun, Спасибо большое , то что надо !!!
 
Ответить
Сообщениеjun, Спасибо большое , то что надо !!!

Автор - company05
Дата добавления - 23.10.2023 в 10:22
company05 Дата: Вторник, 24.10.2023, 23:31 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

2010
jun, Можно будет продолжения вопроса , как сделать чтоб при выборе из выподающего списка месяца , отображолось только на втором листе ь фамилии и рядом количество сделанных изделий выбранного месяца
 
Ответить
Сообщениеjun, Можно будет продолжения вопроса , как сделать чтоб при выборе из выподающего списка месяца , отображолось только на втором листе ь фамилии и рядом количество сделанных изделий выбранного месяца

Автор - company05
Дата добавления - 24.10.2023 в 23:31
jun Дата: Среда, 25.10.2023, 08:28 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

см. файл.
Инструкция внутри (также смотрите комментарии в коде, особенно по именам листов).
К сообщению приложен файл: group_by_with_sql_v1.xlsb (23.4 Kb)


Сообщение отредактировал jun - Среда, 25.10.2023, 08:39
 
Ответить
Сообщениесм. файл.
Инструкция внутри (также смотрите комментарии в коде, особенно по именам листов).

Автор - jun
Дата добавления - 25.10.2023 в 08:28
jun Дата: Среда, 25.10.2023, 11:06 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 42 ±
Замечаний: 0% ±

Если нужно, чтобы на листе с именем ARM в выпадающем списке отображались только те месяцы, которые есть на листе с данными (в примере Лист1), то вариант (см. файл.)
К сообщению приложен файл: group_by_with_sql_if_month_exi.xlsb (23.5 Kb)


Сообщение отредактировал jun - Среда, 25.10.2023, 11:07
 
Ответить
СообщениеЕсли нужно, чтобы на листе с именем ARM в выпадающем списке отображались только те месяцы, которые есть на листе с данными (в примере Лист1), то вариант (см. файл.)

Автор - jun
Дата добавления - 25.10.2023 в 11:06
company05 Дата: Среда, 25.10.2023, 22:58 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 40% ±

2010
jun, Спасибо большое ! Очень сильно помогли !!!!
 
Ответить
Сообщениеjun, Спасибо большое ! Очень сильно помогли !!!!

Автор - company05
Дата добавления - 25.10.2023 в 22:58
  • Страница 1 из 1
  • 1
Поиск:

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