Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Группировка по трем столбцам в итогах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Группировка по трем столбцам в итогах
Заяц6628 Дата: Понедельник, 27.12.2021, 20:12 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! У меня есть данные в трех столбцах, группировка при этом должна быть как в файле уже сделана.
Код "Группировка" не создает нужной группировки.
На больших данных очень долго работает.
Подскажите, как поправить код "Группировка", чтобы она стала верной?
Можно ли сделать что то чтобы обработка на больших массивах была быстрой?
К сообщению приложен файл: 2933739.xlsm (15.1 Kb)
 
Ответить
СообщениеДобрый день! У меня есть данные в трех столбцах, группировка при этом должна быть как в файле уже сделана.
Код "Группировка" не создает нужной группировки.
На больших данных очень долго работает.
Подскажите, как поправить код "Группировка", чтобы она стала верной?
Можно ли сделать что то чтобы обработка на больших массивах была быстрой?

Автор - Заяц6628
Дата добавления - 27.12.2021 в 20:12
RAN Дата: Вторник, 28.12.2021, 08:26 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub Мяу()
    Dim ar, fr_1&, fr_2&, fr_3&, lr&, i&
    Application.ScreenUpdating = False
     fr_1 = 1: fr_2 = 1: fr_3 = 1
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    ar = Range("A" & fr_1 & ":C" & lr).Value
    For i = fr_1 To lr
        If InStr(1, ar(i, 3), "итог", 1) Then
            Rows(fr_3 & ":" & i - 1).Group
            fr_3 = i + 1
        ElseIf InStr(1, ar(i, 2), "итог", 1) Then
            Rows(fr_2 & ":" & i - 1).Group
            fr_3 = i + 1
            fr_2 = i + 1
        ElseIf InStr(1, ar(i, 1), "итог", 1) Then
            Rows(fr_1 & ":" & i - 1).Group
            fr_1 = i + 1
            fr_2 = fr_1
            fr_3 = fr_1
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub Мяу()
    Dim ar, fr_1&, fr_2&, fr_3&, lr&, i&
    Application.ScreenUpdating = False
     fr_1 = 1: fr_2 = 1: fr_3 = 1
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    ar = Range("A" & fr_1 & ":C" & lr).Value
    For i = fr_1 To lr
        If InStr(1, ar(i, 3), "итог", 1) Then
            Rows(fr_3 & ":" & i - 1).Group
            fr_3 = i + 1
        ElseIf InStr(1, ar(i, 2), "итог", 1) Then
            Rows(fr_2 & ":" & i - 1).Group
            fr_3 = i + 1
            fr_2 = i + 1
        ElseIf InStr(1, ar(i, 1), "итог", 1) Then
            Rows(fr_1 & ":" & i - 1).Group
            fr_1 = i + 1
            fr_2 = fr_1
            fr_3 = fr_1
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - RAN
Дата добавления - 28.12.2021 в 08:26
Заяц6628 Дата: Вторник, 28.12.2021, 11:16 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Круто! Все работает, спасибо!
 
Ответить
СообщениеКруто! Все работает, спасибо!

Автор - Заяц6628
Дата добавления - 28.12.2021 в 11:16
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!