powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нумерация строк
14 сообщений из 14, страница 1 из 1
Нумерация строк
    #34043567
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как пронумеровать строки в экселе, если есть столбцы с объединенными строками
т.е. две строки объединнные в одну имеют один номер
автоматом
...
Рейтинг: 0 / 0
Нумерация строк
    #34044030
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для примера, этот макрос работает для выделенного диапазона, т.е. выделяешь ячейки, которые нумеровать и запускаешь его.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub NumerateMerged()
Dim TheColumn As Integer
Dim StartRow As Long
Dim LastRow As Long
Dim CurrentRow As Long
Dim Counter As Long
Dim Cell As Range

    TheColumn = Application.Selection.Column
    StartRow = Application.Selection.Row
    LastRow = StartRow + Application.Selection.Rows.Count -  1 

    Counter =  1 
    For CurrentRow = StartRow To LastRow
        Set Cell = Cells(CurrentRow, TheColumn)
        If Not (Cell.MergeCells = True And Cell.Offset(- 1 ,  0 ).MergeCells = True) Then
            Cell = Counter
            Counter = Counter +  1 
        End If
    Next CurrentRow
    
    Set Cell = Nothing
    
End Sub
...
Рейтинг: 0 / 0
Нумерация строк
    #34044096
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще такой вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub test()
    Dim j As Long, i As Long
    j =  1 
    For i =  2  To  100 
        If Cells(i,  1 ).Address = Cells(i,  1 ).MergeArea( 1 ).Address Then
            Cells(i,  1 ) = j
            j = j +  1 
        End If
    Next i
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нумерация строк
    #34044239
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)еще такой вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub test()
    Dim j As Long, i As Long
    j =  1 
    For i =  2  To  100 
        If Cells(i,  1 ).Address = Cells(i,  1 ).MergeArea( 1 ).Address Then
            Cells(i,  1 ) = j
            j = j +  1 
        End If
    Next i
End Sub


KL
[MVP - Microsoft Excel]
супер!
...
Рейтинг: 0 / 0
Нумерация строк
    #34044247
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ещё вариант
Код: plaintext
=A1+ 1 
и скопировать формулу
...
Рейтинг: 0 / 0
Нумерация строк
    #34044264
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в случае объединенных ячеек этот вариант не сработает
...
Рейтинг: 0 / 0
Нумерация строк
    #34044309
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorвот ещё вариант
Код: plaintext
=A1+ 1 
и скопировать формулу

Пожалуй это самый быстрый способ :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test()
    With [a2]
        .Offset(- 1 ).Value =  1 
        .Value = "=R[-1]C+1"
        .Copy
        With .Resize( 20 )
            .PasteSpecial xlFormulas
            .Value = .Value
        End With
    End With
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нумерация строк
    #34044323
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekв случае объединенных ячеек этот вариант не сработает

это если AutoFill-ом, а если Правка-Копировать, Правка-Специальная вставка... то да.
...
Рейтинг: 0 / 0
Нумерация строк
    #34044329
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) orunbekв случае объединенных ячеек этот вариант не сработает

это если AutoFill-ом, а если Правка-Копировать, Правка-Специальная вставка... то да.
именно так
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Нумерация строк
    #39319538
rda-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbaproдля примера, этот макрос работает для выделенного диапазона, т.е. выделяешь ячейки, которые нумеровать и запускаешь его.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub NumerateMerged()
Dim TheColumn As Integer
Dim StartRow As Long
Dim LastRow As Long
Dim CurrentRow As Long
Dim Counter As Long
Dim Cell As Range

    TheColumn = Application.Selection.Column
    StartRow = Application.Selection.Row
    LastRow = StartRow + Application.Selection.Rows.Count - 1

    Counter = 1
    For CurrentRow = StartRow To LastRow
        Set Cell = Cells(CurrentRow, TheColumn)
        If Not (Cell.MergeCells = True And Cell.Offset(-1, 0).MergeCells = True) Then
            Cell = Counter
            Counter = Counter + 1
        End If
    Next CurrentRow
    
    Set Cell = Nothing
    
End Sub



Здравствуйте! Отличный макрос, спасибо. А можно его скорректировать, чтобы макрос не нумеровал ячейки, в который уже есть такие-то текстовые значения. В данный момент он заменяет все значения в ячейках, в т.ч. и текстовые (см. скриншот).
...
Рейтинг: 0 / 0
Нумерация строк
    #39319965
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rda-9,
Еще один пример, нумерующий объединенные ячейки и пропускающий ячейки в которых есть текст (например, названия разделов).
Нумерует в пером столбце выделенного диапазона.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Sub numeric()
Dim rS As Range, rCol As Range, rCell As Range
Dim iC As Integer

Set rS = Application.Selection
Set rCol = rS.Columns(1)

On Error Resume Next
For Each rCell In rCol.Cells
    Err.Clear: iC = VBA.CInt(rCell)
    If Err.Number <> 0 Then GoTo NextRC
    If rCell.Row <> 1 Then rCell.FormulaR1C1 = "=MAX(R1C1:R[-1]C1)+1": iC = VBA.CInt(rCell): rCell = iC 'for value
NextRC: Next 'rCell

Set rS = Nothing: Set rCol = Nothing: Set rCell = Nothing
End Sub
...
Рейтинг: 0 / 0
Нумерация строк
    #39320091
rda-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobgos,

спасибо, но почему-то нумерация начинается с 2. А иногда нули выдает, если удаляю то, что получилось и повторную делаю нумерацию
...
Рейтинг: 0 / 0
Нумерация строк
    #39320092
rda-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот нули
...
Рейтинг: 0 / 0
Нумерация строк
    #39320577
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rda-9нумерация начинается с 2
так это был просто альтернативный вариант. Конечно, корректнее использовать .MergeCells.
запустите в отладчике и посмотрите что происходит со значением iC
FormulaR1C1 чувствительно к локализации и ReferenceStyle. Просмотрите пример или другие примеры .

rda-9вот нули
возможно из=за текстового формата ячеек.добавьте:
Код: vbnet
1.
rCell.NumberFormat = "0

"
но лучше используйте .MergeCells
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нумерация строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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