Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нумерация строк / 14 сообщений из 14, страница 1 из 1
10.10.2006, 10:59
    #34043567
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк
как пронумеровать строки в экселе, если есть столбцы с объединенными строками
т.е. две строки объединнные в одну имеют один номер
автоматом
...
Рейтинг: 0 / 0
10.10.2006, 12:47
    #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
10.10.2006, 13:02
    #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
10.10.2006, 13:39
    #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
10.10.2006, 13:39
    #34044247
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк
вот ещё вариант
Код: plaintext
=A1+ 1 
и скопировать формулу
...
Рейтинг: 0 / 0
10.10.2006, 13:45
    #34044264
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк
в случае объединенных ячеек этот вариант не сработает
...
Рейтинг: 0 / 0
10.10.2006, 13:54
    #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
10.10.2006, 13:57
    #34044323
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк
orunbekв случае объединенных ячеек этот вариант не сработает

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

это если AutoFill-ом, а если Правка-Копировать, Правка-Специальная вставка... то да.
именно так
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.10.2016, 12:31
    #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
04.10.2016, 00:05
    #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
04.10.2016, 10:07
    #39320091
rda-9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумерация строк
Bobgos,

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

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

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


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