Страницы: 1
RSS
Свод данных в таблицу по времени и дате убывания
 
Здравствуйте!
Подскажите пожалуйста очень нужна Ваша помощь как мне поступить?
В файл Excel Лист 1 собирается информация с 20 паралельних файлов, через ячейка основного файла = ячейке файла 1.2 и тд... Информация собирается в отдельную колонку в одном Листе 1 из всех файлов. У всех файлах расстановка данных на листе одинаковая как в примере, и она обновляется от 1-минуты до 24-часа (динамическая).
Как мне сформировать таблицу чтобы при открытии основного файла весь боем информации с Листа 1 сформировалась на Листе 3 по времени и дате убывания.

Дальше она будет отображаться в TextBox потому надо чтобы она формировалась в момент открытия автоматически.
Я никогда не сталкивался с умной таблицей может она мне в этом помочь?
Может формулами как то можно это сформировать?

По этому нашел не большой макрос.
Вот тут
И сам код
Код
Sub Запуск1()

    Dim shSrc As Worksheet, shRes As Worksheet, arrSrc(), dicDates As Object, dic As Object
    Dim lr As Long, lc As Long, var, r As Long, i As Long, j As Long
    
    Application.ScreenUpdating = False
    
    Set shSrc = ActiveSheet
    Set shRes = Worksheets.Add(After:=shSrc)
    
    lr = shSrc.Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    lc = shSrc.Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Column
    arrSrc() = shSrc.Range("A1").Resize(lr, lc).Value
    
    Set dicDates = CreateObject("Scripting.Dictionary")
    
    For i = 2 To UBound(arrSrc, 1)
        For j = 3 To UBound(arrSrc, 2)
            If IsEmpty(arrSrc(i, j)) = False Then
                If dicDates.Exists(arrSrc(i, j)) = False Then
                    dicDates.Add arrSrc(i, j), ""
                End If
            End If
        Next
    Next
    
    Set dic = CreateObject("Scripting.Dictionary")
    
    For Each var In dicDates.Keys
        dic.RemoveAll
        For i = 2 To UBound(arrSrc, 1)
            For j = 3 To UBound(arrSrc, 2)
                If arrSrc(i, j) = var Then
                    dic.Add arrSrc(i, 1), ""
                    Exit For
                End If
            Next
        Next
        If dic.Count > 0 Then
            r = r + 1
            shRes.Cells(r, "A").Value = var
            shRes.Cells(r, "B").Resize(1, dic.Count).Value = dic.Keys
        End If
    Next

    shRes.Sort.SortFields.Clear
    shRes.Sort.SortFields.Add Key:=shRes.Columns("A"), SortOn:=xlSortOnValues, Order:=xlAscending
    With shRes.Sort
        .SetRange shRes.Range("A1").CurrentRegion
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
    
    shRes.Columns("A").AutoFit
    
    Application.ScreenUpdating = True
    
End Sub
Изменено: Ян Копко - 22.07.2021 12:47:37
 
Подскажите в какую сторону смотреть?
 
ваш макрос не нужен, нужно описание задачи, по которому его можно будет написать
Изменено: Ігор Гончаренко - 22.07.2021 14:16:07
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Изменил текст
Прошу помочь в написании макроса. Макрос должен делать следующие действия
1) Сформировать таблицу на листе 1 в диапазоне А2:G100 c диапазона H2:AI100 по времени и дате по убыванию.

Прикрепил файл
Изменено: Ян Копко - 22.07.2021 14:39:23
 
Цитата
Ігор Гончаренко написал:
описание задачи, по которому его можно будет написать
нужно именно такое описание, по которому можно написать макрос, а не описание из которого можно узнать о том, что вам нужен макрос
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Возможно, Вам покажутся полезными идеи отсюда
Сборка таблиц с разными шапками из нескольких книг
 
Мне надо окончательный результат как у Николая в образце, но данная таблица статическая, ее надо будет постоянно формировать при открытии
+ в моих таблицах все заголовки одинаковые
 
Вашу задачу можно решить при помощи Power Query, не разобралса как подтянуть файл с решением
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Добавлен индекс" = Table.AddIndexColumn(Источник, "Индекс", 0, 1, Int64.Type),
    #"Другие столбцы с отмененным свертыванием" = Table.UnpivotOtherColumns(#"Добавлен индекс", {"Индекс"}, "Атрибут", "Значение"),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Другие столбцы с отмененным свертыванием", each ([Значение] <> 0 and [Значение] <> "Данные 1" and [Значение] <> "Данные 2" and [Значение] <> "Данные 3" and [Значение] <> "Данные 4" and [Значение] <> "Данные 5" and [Значение] <> "Дата" and [Значение] <> "Наименование")),
    #"Добавлен индекс1" = Table.AddIndexColumn(#"Строки с примененным фильтром", "Индекс.1", 0, 1, Int64.Type),
    #"Вставлено: целочисленное деление" = Table.AddColumn(#"Добавлен индекс1", "Целочисленное деление", each Number.IntegerDivide([Индекс.1], 7), Int64.Type),
    #"Вычисленный остаток от деления" = Table.TransformColumns(#"Вставлено: целочисленное деление", {{"Индекс.1", each Number.Mod(_, 7), type number}}),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Вычисленный остаток от деления",{"Значение", "Индекс.1", "Целочисленное деление"}),
    #"Сведенный столбец" = Table.Pivot(Table.TransformColumnTypes(#"Другие удаленные столбцы", {{"Индекс.1", type text}}, "uk-UA"), List.Distinct(Table.TransformColumnTypes(#"Другие удаленные столбцы", {{"Индекс.1", type text}}, "uk-UA")[Индекс.1]), "Индекс.1", "Значение"),
    #"Измененный тип" = Table.TransformColumnTypes(#"Сведенный столбец",{{"0", type datetime}, {"1", type text}, {"2", type text}, {"3", type text}, {"4", type text}, {"5", type text}, {"6", type text}}),
    #"Другие удаленные столбцы1" = Table.SelectColumns(#"Измененный тип",{"0", "1", "2", "3", "4", "5", "6"}),
    #"Сортированные строки" = Table.Sort(#"Другие удаленные столбцы1",{{"0", Order.Ascending}})
in
    #"Сортированные строки"
 
Благодарю Вас, буду разбираться
 
Пример оброботки в файле
Страницы: 1
Наверх