Столкнулся с проблемой структуризации файла, кто может подсказать как из исходного файла можно получить вот такое дерево. Скидываю кусок файла, в полном 28.000 строк
Спасибо огромное, но жаль, что я никак не силен в макросах Как сам блок работает я понял, получилось даже сделать дерево, но один факт - итоге все внизу получились, потому что при снятии галочки "итоги в строках по данными" все дико смещается при вставке промежуточных итого, где только одно значение, может подскажите что-как?
Sub uuu()
Dim a()
Dim i&, j&, rw&, gr&
Dim cat$
'--------------------------
Application.ScreenUpdating = False
a = Sheets("Лист1").UsedRange.Value
With Sheets("Лист2")
.UsedRange.ClearOutline
.Outline.SummaryRow = xlAbove
rw = 2
For i = 2 To UBound(a)
cat = a(i, 1)
.Cells(rw, 1) = cat
gr = rw + 1
Do
DoEvents
If a(i, 1) <> cat Then Exit Do
rw = rw + 1
For j = 2 To UBound(a, 2)
.Cells(rw, j) = a(i, j)
Next
i = i + 1
If i > UBound(a) Then Exit Do
Loop
.Rows(gr & ":" & rw).Group
rw = rw + 1
i = i - 1
Next
.Outline.ShowLevels RowLevels:=1
.Activate
End With
Application.ScreenUpdating = True
Beep
MsgBox "Готово!"
End Sub
wooble написал: мне промежуточные итоги нужны, и группировка на три уровня...
Бывает. Лист1 и Лист2 это было в моём файле. В вашем будет Лист5 и какой нибудь лист. Макрос не двигает строки он делает группировки в 1 уровень на другом листе. Где взять данных на 3 уровня из файла не понятно, да мне и не надо.
SanShiney, спасибо за Надстройку... только как её подключить? расположила файл в C:\Users\adm\AppData\Roaming\Microsoft\AddIns (где лежат и др надстройки) в xl включила через Файл-->Параметры-->Надстройки-->Надстройки Excel--> теперь она числится, как активная, но на вкладке Надстройки почему-то её не видно? p.s. xl2010sp1 x32, windows7 x32
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Группировка данных по отступу. Группирует согласно данных в столбце А.
Скрытый текст
Sub grup_Otstup() Dim lr&, c As Range
With ActiveSheet lr = .Cells(.Rows.Count, 1).End(xlUp).Row .Outline.SummaryRow = xlAbove For Each c In .Range(.[a3], .Cells(lr, 1)).Cells c.EntireRow.OutlineLevel = c.IndentLevel + 1 Next End With