Здравствуйте! Подскажите пожалуйста очень нужна Ваша помощь как мне поступить? В файл 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
Изменил текст Прошу помочь в написании макроса. Макрос должен делать следующие действия 1) Сформировать таблицу на листе 1 в диапазоне А2:G100 c диапазона H2:AI100 по времени и дате по убыванию.
Мне надо окончательный результат как у Николая в образце, но данная таблица статическая, ее надо будет постоянно формировать при открытии + в моих таблицах все заголовки одинаковые