Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дерево данных в Excel / 6 сообщений из 6, страница 1 из 1
27.02.2008, 14:44
    #35158006
Max14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
Господа! Помогите решить задачу! Необходимо реализовать дерево в екселе с помощью макроса. Группировать в зависимости от данных, те динамически. Смотреть приложеный файл
...
Рейтинг: 0 / 0
28.02.2008, 09:34
    #35159666
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Dim r1, r2  ' текущее значение
Dim a1, a2  ' номер строки
Dim p1, p2  ' прежнее значение

Dim stroki As Range, rng As Range


Sub Макрос1()

    Set stroki = ThisWorkbook.Worksheets("исходные данные").Range("A1:A30")
    
    For Each rng In stroki
    
        r2 = Mid(rng.Value,  1 ,  3 )
        If p2 <> r2 Then
            Group12 (a2)
            p2 = r2
            a2 = rng.Row
        End If
        
        r1 = Mid(rng.Value,  1 ,  1 )
        If p1 <> r1 Then
            Group12 (a1)
            p1 = r1
            a1 = rng.Row
        End If
    
    Next
    
End Sub


Sub Group12(ByVal a)
    If (IsEmpty(a) = False) And ((a +  1 ) < (rng.Row -  1 )) Then
        stroki.Range((a +  1 ) & ":" & (rng.Row -  1 )).Group
    End If
End Sub
...
Рейтинг: 0 / 0
28.02.2008, 11:08
    #35159935
Max14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
Спасибо большое! Но почемуто 4 уровень не работает :( . Помогите плиз разобраться.
...
Рейтинг: 0 / 0
28.02.2008, 12:26
    #35160278
livin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
Max14Спасибо большое! Но почемуто 4 уровень не работает :( . Помогите плиз разобраться.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Dim r1, r2  ' текущее значение
Dim a1, a2  ' номер строки
Dim p1, p2  ' прежнее значение

Dim stroki As Range, rng As Range


Sub Макрос1()

    Set stroki = ThisWorkbook.Worksheets("исходные данные").Range("A1:A30")
    
    For Each rng In stroki
        r3 = Mid(rng.Value,  1 ,  5 )
        If p3 <> r3 Then
            'MsgBox "a2: " & a2
            Group12 (a3)
            p3 = r3
            a3 = rng.Row
        End If
        
        r2 = Mid(rng.Value,  1 ,  3 )
        If p2 <> r2 Then
            'MsgBox "a2: " & a2
            Group12 (a2)
            p2 = r2
            a2 = rng.Row
        End If
        
        r1 = Mid(rng.Value,  1 ,  1 )
        If p1 <> r1 Then
        'MsgBox "a1: " & a1
            Group12 (a1)
            p1 = r1
            a1 = rng.Row
        End If
    
    Next
    
End Sub


Sub Group12(ByVal a)
    If (IsEmpty(a) = False) And ((a +  1 ) < (rng.Row -  1 )) Then
        stroki.Range((a +  1 ) & ":" & (rng.Row -  1 )).Group
    End If
End Sub



но, почему-то не правильно отрабатывает в последних ячейках
...
Рейтинг: 0 / 0
28.02.2008, 18:21
    #35161530
Max14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
Помогите плиз, очень срочно нужно!!!
...
Рейтинг: 0 / 0
29.02.2008, 07:34
    #35162099
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево данных в Excel
переменные всё-таки надо объявить
Код: plaintext
1.
2.
Dim r1, r2, r3  ' текущее значение
Dim a1, a2, a3  ' номер строки
Dim p1, p2, p3  ' прежнее значение
и последнюю строку надо указать на единицу больше или вообще "A:A"
что бы обработать нормально последнюю строку
Код: plaintext
    ... .Range("A1:A30")

и наверное надо добавлять пустую строку, (может быть, не уверен), если в данной строке группировка уже есть.
Ну в смысле на этой строке плюсик, уже нарисовался.
Код: plaintext
    rng.Offset( 1 ).EntireRow.Insert
вообщем с четвёртым уровнем, у меня то же трудности из-за того, что я не знаю как узнать, есть ли плюс на этой строке или нет
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дерево данных в Excel / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]