добрый день знатоки екселя код проставляет страницы в ячейке А исходя наличия значений в ячейке B, нужна нумерация, если в ячейке B встречается объединенная ячейка, как 7.1, 7.2, 7.3 и далее по следующему номеру как это можно сделать?
добрый день знатоки екселя код проставляет страницы в ячейке А исходя наличия значений в ячейке B, нужна нумерация, если в ячейке B встречается объединенная ячейка, как 7.1, 7.2, 7.3 и далее по следующему номеру как это можно сделать?Головастик
Sub Кнопка1_Щелчок() r1_ = Cells(Rows.Count, 2).End(xlUp).Row'№ последней заполненной строки в столбце 2 ar = Cells(1).Resize(r1_, 2)'с ячейки А1 вниз на r1_ вправо на 2 - все это суем в массив For i = 1 To r1_'цикл по строкам If ar(i, 2) = "" Then'если в ячейке второго столбца пусто k_ = k_ + 1'счетчик k увеличиваем на 1 If k_ = 1 Then'если это первая пусто для этого блока пустых ar(i - 1, 1) = n_ & "." & k_ & Chr(160)'в ячейку столбца 2 строки выше пишем порядковый номер n (см. ниже) с точкой, с k_ и с неразравным пробелом ' неразрывный пробел для того, чтобы при вставке на лист точки не преобразовывались в запятые или в даты 'на самом деле пишем не в ячейку столбца, а в то место массива ar, которое соответствует ячейке. Про ячейку написал просто для понятности k_ = k_ + 1'счетчик k увеличиваем на 1 End If' ar(i, 1) = n_ & "." & k_ & Chr(160)'в ячейку столбца 2 строки выше пишем порядковый номер n (см. ниже) с точкой, с k_ и с неразравным пробелом Else'если в ячейке второго столбца не пусто k_ = 0'обнуляем счетчик пустых n_ = n_ + 1'счетчик n увеличиваем на 1 ar(i, 1) = n_'в ячейку столбца 2 строки выше пишем порядковый номер n End If Next Cells(1).Resize(r1_, 2) = ar'загружаем массив на лист End Sub
[/vba]
* Добавил комментарии
Так нужно? [vba]
Код
Sub Кнопка1_Щелчок() r1_ = Cells(Rows.Count, 2).End(xlUp).Row'№ последней заполненной строки в столбце 2 ar = Cells(1).Resize(r1_, 2)'с ячейки А1 вниз на r1_ вправо на 2 - все это суем в массив For i = 1 To r1_'цикл по строкам If ar(i, 2) = "" Then'если в ячейке второго столбца пусто k_ = k_ + 1'счетчик k увеличиваем на 1 If k_ = 1 Then'если это первая пусто для этого блока пустых ar(i - 1, 1) = n_ & "." & k_ & Chr(160)'в ячейку столбца 2 строки выше пишем порядковый номер n (см. ниже) с точкой, с k_ и с неразравным пробелом ' неразрывный пробел для того, чтобы при вставке на лист точки не преобразовывались в запятые или в даты 'на самом деле пишем не в ячейку столбца, а в то место массива ar, которое соответствует ячейке. Про ячейку написал просто для понятности k_ = k_ + 1'счетчик k увеличиваем на 1 End If' ar(i, 1) = n_ & "." & k_ & Chr(160)'в ячейку столбца 2 строки выше пишем порядковый номер n (см. ниже) с точкой, с k_ и с неразравным пробелом Else'если в ячейке второго столбца не пусто k_ = 0'обнуляем счетчик пустых n_ = n_ + 1'счетчик n увеличиваем на 1 ar(i, 1) = n_'в ячейку столбца 2 строки выше пишем порядковый номер n End If Next Cells(1).Resize(r1_, 2) = ar'загружаем массив на лист End Sub