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

Вход

Регистрация

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

 

= Мир MS Excel/Автонумерация строк простая или как "протянуть" формулу. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автонумерация строк простая или как "протянуть" формулу. (Макросы/Sub)
Автонумерация строк простая или как "протянуть" формулу.
Yar4i Дата: Понедельник, 19.09.2016, 16:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброе время дамы и господа :D
Простая нумерация. Искал, пытался...
Для удобства уже подготовил ячейки (они константы) A22 и A23.
A22 = 1, A23 =
Код
=1+R[-1]C

В столбце B уже есть заполненные данные. Длина столбца всегда разная, в прилагаемом файле с 22 по 32 строку. Итого 11 номеров.
Остается выделить ячейку A23 и совершить двойной клик по маленькому чёрному квадрату внизу справа (в ячейке A23). И Excel сам пронумерует нужное количество строк и остановится в ячейке A32.
А в макросе как это сделать я не знаю. Пытаюсь, но везде требуется ввод конечной ячейки.
Здесь нашёл искомое, но без формулы. А мне она нужна.
Найденное чуть изменил:
[vba]
Код

With Sheets("12345") 'с листом "12345"
lr = Cells(Rows.Count, 2).End(xlUp).Row 'определяем номер последней заполненной ячейки по 2 столбцу
X = 1 'первая цифра в нумерации
If lr = 4 Then Exit Sub 'если последняя строка = 4 то выход из макроса (нет позиций, только шапка)
For i = 22 To lr 'проходим по всем строкам от 22 до последней
Cells(i, 1) = X 'заносим номер в ячейку
X = X + 1 'увеличиваем счётчик на ед.
Next 'следующая ячейка
End With
[/vba]

Как "протянуть" формулу до последней заполненной ячейки в столбце B?
К сообщению приложен файл: 12345.xlsx(11Kb)


Сообщение отредактировал Yar4i - Понедельник, 19.09.2016, 16:21
 
Ответить
СообщениеДоброе время дамы и господа :D
Простая нумерация. Искал, пытался...
Для удобства уже подготовил ячейки (они константы) A22 и A23.
A22 = 1, A23 =
Код
=1+R[-1]C

В столбце B уже есть заполненные данные. Длина столбца всегда разная, в прилагаемом файле с 22 по 32 строку. Итого 11 номеров.
Остается выделить ячейку A23 и совершить двойной клик по маленькому чёрному квадрату внизу справа (в ячейке A23). И Excel сам пронумерует нужное количество строк и остановится в ячейке A32.
А в макросе как это сделать я не знаю. Пытаюсь, но везде требуется ввод конечной ячейки.
Здесь нашёл искомое, но без формулы. А мне она нужна.
Найденное чуть изменил:
[vba]
Код

With Sheets("12345") 'с листом "12345"
lr = Cells(Rows.Count, 2).End(xlUp).Row 'определяем номер последней заполненной ячейки по 2 столбцу
X = 1 'первая цифра в нумерации
If lr = 4 Then Exit Sub 'если последняя строка = 4 то выход из макроса (нет позиций, только шапка)
For i = 22 To lr 'проходим по всем строкам от 22 до последней
Cells(i, 1) = X 'заносим номер в ячейку
X = X + 1 'увеличиваем счётчик на ед.
Next 'следующая ячейка
End With
[/vba]

Как "протянуть" формулу до последней заполненной ячейки в столбце B?

Автор - Yar4i
Дата добавления - 19.09.2016 в 16:14
gge29 Дата: Понедельник, 19.09.2016, 16:27 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 159
Репутация: 3 ±
Замечаний: 0% ±

Такая устроит?Протяните ячейку В34
Если убрать данные в ячейке B,найдёт последнюю заполненную и пересчитает
К сообщению приложен файл: 2778078.xlsx(11Kb)


Сообщение отредактировал gge29 - Понедельник, 19.09.2016, 16:30
 
Ответить
СообщениеТакая устроит?Протяните ячейку В34
Если убрать данные в ячейке B,найдёт последнюю заполненную и пересчитает

Автор - gge29
Дата добавления - 19.09.2016 в 16:27
_Boroda_ Дата: Понедельник, 19.09.2016, 16:28 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=1+R[-1]C"
[/vba]
Range("B" & Rows.Count).End(xlUp) - это мы встали в ячейку B1048576 (самую нижнюю ячейку столбца В) и нажали Контрл Енд
Почему просто не написали B1048576? Потому, что в Excel 2003 (2000 и меньше) 65536 строк


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=1+R[-1]C"
[/vba]
Range("B" & Rows.Count).End(xlUp) - это мы встали в ячейку B1048576 (самую нижнюю ячейку столбца В) и нажали Контрл Енд
Почему просто не написали B1048576? Потому, что в Excel 2003 (2000 и меньше) 65536 строк

Автор - _Boroda_
Дата добавления - 19.09.2016 в 16:28
buchlotnik Дата: Понедельник, 19.09.2016, 16:29 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
так нужно? [vba]
Код
With Sheets("12345")
lr = Cells(Rows.Count, 2).End(xlUp).Row
X = 1
If lr = 4 Then Exit Sub
Cells(22, 1) = X
For i = 23 To lr
Cells(i, 1).FormulaR1C1 = "=1+R[-1]C"
Next
End With
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
Сообщениетак нужно? [vba]
Код
With Sheets("12345")
lr = Cells(Rows.Count, 2).End(xlUp).Row
X = 1
If lr = 4 Then Exit Sub
Cells(22, 1) = X
For i = 23 To lr
Cells(i, 1).FormulaR1C1 = "=1+R[-1]C"
Next
End With
[/vba]

Автор - buchlotnik
Дата добавления - 19.09.2016 в 16:29
Yar4i Дата: Понедельник, 19.09.2016, 17:02 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо.
Много нового узнал. Разбираюсь.

***
Все варианты попробовал, всё работает. Спасибо.
И немного изменил - не знаю правильно или нет:
[vba]
Код
Range("A22").Select
ActiveCell.FormulaR1C1 = "1"
Range("A23").Select
ActiveCell.FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
[/vba]
Но оно работает. И что прекрасно - при удалении любой пронумерованной строки эта Формула, она автоматом пронумеровывает вновь и вновь!


Сообщение отредактировал Yar4i - Вторник, 20.09.2016, 09:54
 
Ответить
СообщениеСпасибо.
Много нового узнал. Разбираюсь.

***
Все варианты попробовал, всё работает. Спасибо.
И немного изменил - не знаю правильно или нет:
[vba]
Код
Range("A22").Select
ActiveCell.FormulaR1C1 = "1"
Range("A23").Select
ActiveCell.FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
[/vba]
Но оно работает. И что прекрасно - при удалении любой пронумерованной строки эта Формула, она автоматом пронумеровывает вновь и вновь!

Автор - Yar4i
Дата добавления - 19.09.2016 в 17:02
buchlotnik Дата: Вторник, 20.09.2016, 10:18 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
правильно или нет
правильно, но можно покороче:
[vba]
Код
[A22]=1
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Вторник, 20.09.2016, 10:20
 
Ответить
Сообщение
Цитата
правильно или нет
правильно, но можно покороче:
[vba]
Код
[A22]=1
Range("A23:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R22C1:R[-1]C)+1)"
[/vba]

Автор - buchlotnik
Дата добавления - 20.09.2016 в 10:18
Yar4i Дата: Вторник, 20.09.2016, 12:25 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
покороче

я на A23 два раза навязал действие и 4 и 5 строкой кода.
Спасибо.
 
Ответить
Сообщение
покороче

я на A23 два раза навязал действие и 4 и 5 строкой кода.
Спасибо.

Автор - Yar4i
Дата добавления - 20.09.2016 в 12:25
buchlotnik Дата: Вторник, 20.09.2016, 12:32 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Не только - первые две строки вашего кода сводятся к [vba]
Код
[A22]=1
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
СообщениеНе только - первые две строки вашего кода сводятся к [vba]
Код
[A22]=1
[/vba]

Автор - buchlotnik
Дата добавления - 20.09.2016 в 12:32
Yar4i Дата: Вторник, 20.09.2016, 13:12 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
первые две строки

я по началу не поверил, что можно так назначать)
Эта штука получше шахмат - "тыщи" ходов.
***
Приложил в файле готовый макрос.
П.С. Утром научился кнопку добавлять.
К сообщению приложен файл: 12345.xltm(18Kb)


Сообщение отредактировал Yar4i - Среда, 21.09.2016, 06:30
 
Ответить
Сообщение
первые две строки

я по началу не поверил, что можно так назначать)
Эта штука получше шахмат - "тыщи" ходов.
***
Приложил в файле готовый макрос.
П.С. Утром научился кнопку добавлять.

Автор - Yar4i
Дата добавления - 20.09.2016 в 13:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автонумерация строк простая или как "протянуть" формулу. (Макросы/Sub)
Страница 1 из 11
Поиск:

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