Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2021, 15:54   #1
Belfire
Пользователь
 
Регистрация: 24.12.2016
Сообщений: 18
Вопрос Преобразование беспорядочного набора записей в наглядную форму

День добрый,
Сам все не могу разобраться как из выгрузки "листа1" вывести необходимые значения в наглядную форму "листа2".
Должно выводится "id техники", "оператор ее использующий" и "признак смены" с последующей соответствующей этим значениям "количество замеров". Причем один и тот же оператор должен выводится единоразово если у него не было иного "признака смены" и "количество замеров" в этой записи по оператору суммируется.
на картинке возможно разъяснил что должно получиться в итоге более понятнее. Буду благодарен помощи)
Пока не выходит найти подходящий код для доработки под свой цикл по отбору всех записей одного "id" с выводом относящихся к нему данных + еще мне не совсем понятно как осуществить суммирование ячеек "количества замеров"

Код:
Sub Test()
'Объявление переменных
    Dim lastRow As Long
'Определение заполненной крайней строки
    lastRow = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
    lastRow = CInt(lastRow)
на картинке постарался разъяснить что в итоге должно получиться. Буду благодарен помощи)
Изображения
Тип файла: jpg форма.jpg (131.7 Кб, 1 просмотров)
Вложения
Тип файла: zip macros.zip (16.8 Кб, 1 просмотров)
Belfire вне форума Ответить с цитированием
Старый 26.05.2021, 17:59   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Сводная чем не выход?
att.jpg

и как вариант - код

Код:
Sub DoWork()
    Dim wks1 As Worksheet
    Dim wks2 As Worksheet
    Dim lastRow As Integer
    Dim sJoinedString As String
    Dim dict As Scripting.Dictionary
    Dim value_ As Integer
    Dim ar() As String
    Dim i As Integer
    Set wks1 = Sheets("Лист1")
    Set wks2 = Sheets("Лист2")
    Set dict = CreateObject("Scripting.Dictionary")
    With wks1
        lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 2 To lastRow
            sJoinedString = .Cells(i, "A").Value2 & "@" & .Cells(i, "C").Value2 & "@" & .Cells(i, "E").Value2
            
            value_ = CInt(.Cells(i, "D").Value2)
            
            If Not dict.Exists(sJoinedString) Then
                dict.Add sJoinedString, value_
            Else
                dict(sJoinedString) = dict(sJoinedString) + value_
            End If
        Next i
    End With
    For i = 0 To dict.Count - 1
        ar = Split(dict.Keys(i), "@")
        wks2.Cells(i + 3, "A") = ar(0)
        wks2.Cells(i + 3, "B") = ar(1)
        wks2.Cells(i + 3, "C") = ar(2)
        wks2.Cells(i + 3, "D") = dict.Items(i)
    Next i
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 26.05.2021 в 18:25.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение набора записей по курсору polin11 SQL, базы данных 3 30.12.2019 18:26
выделение набора записей CAHDEP Microsoft Office Access 0 26.01.2018 18:01
Преобразование записей в столбце Neymexa SQL, базы данных 4 02.11.2011 13:52
преобразование 8-битного набора символов в 7-битный. 0479 Помощь студентам 4 21.09.2010 21:34
Обновление набора данных после добавления в таблицу записей "внешней" программой dimmm БД в Delphi 5 21.04.2009 00:56