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

Вход

Регистрация

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

 

= Мир MS Excel/Нумерация после скрытия строк. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Нумерация после скрытия строк. (Макросы/Sub)
Нумерация после скрытия строк.
Amator Дата: Суббота, 16.03.2019, 20:23 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте. Прошу помощи. Во вложении таблица состоит из блоков (для наглядности выделил разными цветами), номера которых в столбце "А". Если скрыть строки макросом (кнопка фильтр) - нумерация становится некорректной. Необходимо макросом сделать новую нумерацию по блокам для видимых строк (количество видимых строк может менятся. Заранее спасибо.
К сообщению приложен файл: _10.xlsm(35.1 Kb)
 
Ответить
СообщениеЗдравствуйте. Прошу помощи. Во вложении таблица состоит из блоков (для наглядности выделил разными цветами), номера которых в столбце "А". Если скрыть строки макросом (кнопка фильтр) - нумерация становится некорректной. Необходимо макросом сделать новую нумерацию по блокам для видимых строк (количество видимых строк может менятся. Заранее спасибо.

Автор - Amator
Дата добавления - 16.03.2019 в 20:23
_Boroda_ Дата: Суббота, 16.03.2019, 22:30 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15218
Репутация: 5981 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код

Sub fil()
    Dim rws As Range
    Application.ScreenUpdating = 0
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_
    ar1 = Cells(r0_ + 1, 5).Resize(n_)
    ar2 = Cells(r0_ + 1, 19).Resize(n_)
    ar0 = Cells(r0_ + 1, 1).Resize(n_, 2)
    For i = 1 To n_
        If ar2(i, 1) = 0 And (ar1(i, 1) = 0 Or ar1(i, 1) = "") Then
            If rws Is Nothing Then
                Set rws = Cells(i + r0_, 1)
            Else
                Set rws = Union(rws, Cells(i + r0_, 1))
            End If
            ar0(i, 1) = ""
        Else
            If k_ Then
                If UCase(Left(ar0(i, 2), 6)) <> "ВСЕГО " Then
                    If ar0(i, 2) <> z_ Or ar0(i, 1) Then
                        k_ = k_ + 1
                        ar0(i, 1) = k_
                        z_ = ar0(i, 2)
                    End If
                End If
            Else
                k_ = 1
                ar0(i, 1) = k_
                z_ = ar0(i, 2)
            End If
        End If
    Next i
    Cells(r0_ + 1, 1).Resize(n_) = ar0
    rws.EntireRow.Hidden = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]

И есть такая функция СУММЕСЛИ, ее иногда очень удобно использовать. См. красные ячейки в столбце V
К сообщению приложен файл: _10_1.xlsm(37.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код

Sub fil()
    Dim rws As Range
    Application.ScreenUpdating = 0
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_
    ar1 = Cells(r0_ + 1, 5).Resize(n_)
    ar2 = Cells(r0_ + 1, 19).Resize(n_)
    ar0 = Cells(r0_ + 1, 1).Resize(n_, 2)
    For i = 1 To n_
        If ar2(i, 1) = 0 And (ar1(i, 1) = 0 Or ar1(i, 1) = "") Then
            If rws Is Nothing Then
                Set rws = Cells(i + r0_, 1)
            Else
                Set rws = Union(rws, Cells(i + r0_, 1))
            End If
            ar0(i, 1) = ""
        Else
            If k_ Then
                If UCase(Left(ar0(i, 2), 6)) <> "ВСЕГО " Then
                    If ar0(i, 2) <> z_ Or ar0(i, 1) Then
                        k_ = k_ + 1
                        ar0(i, 1) = k_
                        z_ = ar0(i, 2)
                    End If
                End If
            Else
                k_ = 1
                ar0(i, 1) = k_
                z_ = ar0(i, 2)
            End If
        End If
    Next i
    Cells(r0_ + 1, 1).Resize(n_) = ar0
    rws.EntireRow.Hidden = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]

И есть такая функция СУММЕСЛИ, ее иногда очень удобно использовать. См. красные ячейки в столбце V

Автор - _Boroda_
Дата добавления - 16.03.2019 в 22:30
Amator Дата: Воскресенье, 17.03.2019, 11:57 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, большое спасибо за Вашу помощь.
 
Ответить
Сообщение_Boroda_, большое спасибо за Вашу помощь.

Автор - Amator
Дата добавления - 17.03.2019 в 11:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Нумерация после скрытия строк. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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