Содержание
- Автоматическая нумерация строк в Excel по порядку с помощью VBA
- Автонумерация строк excel
- 3 способа автоматической нумерации строк в программе Microsoft Excel
- Нумерация
- Способ 1: заполнение первых двух строк
- Способ 2: использование функции
- Способ 3: использование прогрессии
- Нумерация строк в MS EXCEL
- Используем формулы
- Используем клавишу CTRL
- Используем начало последовательности
- Использование инструмента Прогрессия
- Нумерация столбцов в Microsoft Excel
- Способы нумерации
- Способ 1: маркер заполнения
- Способ 2: нумерация с помощью кнопки «Заполнить» на ленте
- Способ 3: функция СТОЛБЕЦ
- Сохранение нумерации в таблице при удалении строк в MS EXCEL
- Автоматическая нумерация строк
- Автонумерация строк простая или как «протянуть» формулу. (Макросы/Sub)
Автоматическая нумерация строк в Excel по порядку с помощью VBA
Каждый знает, как проставить нумерацию строк в excel. Для этого достаточно поставить первые две цифры, выделить их и потянуть за появившийся в правом нижнем углу выделенной области черный квадрат. Все нумерация готова.
Вот так делается ручная нумерация строк
Но когда возникает необходимость делать эту процедуру часто, или ввиду обилия нескольких разделов и подразделов – ручная нумерация строк в таблице excel превращается в скучную рутинную работу. И гораздо приятнее написать макрос нумерации строк excel и наслаждаться результатом через долю секунды.
excel vba автоматическая нумерация строк
Работоспособный макрос нумерации строк в excel по порядку приведен ниже:
Первым делом привязываем запуск макроса при нажатии на кнопку «Обновить нумерацию». Далее запускаем цикл и выполняем его до тех пор, пока ячейка B3 и D3 содержит текст. При этом последовательно перемещаемся к ниже идущим ячейкам от B3 и D3, используя Offset и переменную i: .offset(i, 0) . Одновременно с этим, нумеруем задачи (если B3+i содержит текст) и подзадачи (если B3+i не содержит текст, при этом содержит текст D3+i). Ну и напоследок убираем курсор с кнопки «Обновить нумерацию».
Саму экселевсую книгу с макросом автоматической нумерации можно скачать по этой ссылке. На этом все. Остались вопросы – задавайте их в комментариях. С другими кейсами по автоматизации можно ознакомиться здесь.
Источник
Автонумерация строк excel
3 способа автоматической нумерации строк в программе Microsoft Excel
Смотрите также в аналоговом окне) «=1+R[-1]C»X = 1 ThenShipuchka. Если значение в по порядку.«1» должно быть отключено.После того, как выполнено Переводим переключатель вСОВЕТ: плюсик), значение из тому же, что«По столбцам» тянуть маркер поЧасто при создании таблицнужно в колонкеNext ‘первая цифра в.Value = Nn:: Я работаю в
Нумерация
в нумерации колонок. То есть, не копирование, мы видим, позициюО специальных случаяхA2 было при использовании. Переключатель параметра таблице в несколько в Экселе выделяют С сделать автонумерациюEnd With
Способ 1: заполнение первых двух строк
нумерации Nn = Nn 2007 версии. Здесь
- ЕМастер функций в Excel Кликаем по кнопке нужно, чтобы около что вся строка«Добавить строку»
нет Списка, егоотсутствует, то номерКак видим, произвести нумерацию
«Вставить функцию» соответствующего наименования параметра заполнена цифрой «1».. Жмем на кнопку почитать в статьях Получим последовательность чисел необходимости прокручивать таблицудолжен находиться в и тысяч строк, которой для удобства
Способ 2: использование функции
по таким условиям:: Спасибо. 4 Then Exit.NumberFormat = Selection(1).NumberFormat
- переименовали в Таблицу. А соответствующей строки не столбцов в Экселе, размещенную слева от стояла галочка. В Но нам нужна«OK» Автоматическая перенумерация строк 1, 2, 3,
можно несколькими способами. строки формул. поле нумерация по порядку.
. при применении фильтра, 4 …Как видим, существует три«Арифметическая»Второй способ автоматического заполнения строк. Если таблица
Способ 3: использование прогрессии
цифра ячейки С Разбираюсь. строка = 4.VerticalAlignment = Selection(1).VerticalAlignment то бред
- СОВЕТ: Наиболее популярный изОткрывается«Шаг»
Кликаем на пиктограмму,В первую ячейку добавленной Автоматическая нумерация приВНИМАНИЕ! основных способа автоматической. В поле предусматривает использование функции не слишком длинная, в активной строке***
программе. Из нихнужно установить число. большой проблемы выполнить нумерацию с 1, всё работает. Спасибо.
только шапка)End If поможет?
- является использование таблиц слишком широких таблицах перечень различных функций«1» ячейки. Появляется список
на нижний правый и столбцов римскими то этот подход имеет вариант с установлено другое. Обязательно будет находиться цифра цифры с клавиатуры. С 12340, количество — не знаю 22 To lr MrgCls = True: В Списке во 2007. Об этом кнопку«СТОЛБЕЦ»«Предельное значение»
переключателя в позицию угол этой ячейки. цифрами и Нумерация и остальные, приведенные нумерацией первых двух заполните поле «1» нумерации. Вводим Но, что делать, копий строки равно правильно или нет: ‘проходим по всемEnd With вставляемые строки формулы
читайте в статье
Нумерация строк в MS EXCEL
«Заполнить», выделяем его и
Используем формулы
должно быть пустым.«Заполнить» Курсор превращается в столбцов буквами. ниже, работать не строк с последующим«Предельное значение» в строку для если она имеет 3
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Range(«A22»).Select строкам от 22Next вставляются автоматически. Автоматическая нумерация прис переходом в жмем на кнопку Если какой-то параметр. крестик. Именно онПри работе с таблицами будут. Чтобы разрешить
копированием (как самый. Тут следует указать формул выражение не один десяток,должно получитсяActiveCell.FormulaR1C1 = «1»
до последнейApplication.ScreenUpdating = Truewebley
Используем клавишу CTRL
добавлении строк. настройки прогрессии. Данный«OK» не совпадает сПосле этого все ячейки называется маркером заполнения. довольно часто требуется нумерацию строк с простой) и вариант количество строк, которые«=СТРОКА(A1)» а то и12340Range(«A23»).SelectCells(i, 1) =End Sub: Не знал, спасибоShipuchka
способ не предполагает. позициями, озвученными выше, выделенного диапазона будет Одновременно зажимаем левую произвести нумерацию столбцов. использованием клавиши с использованием прогрессии нужно пронумеровать. Если.Кликаем по клавише не одну сотню12341ActiveCell.FormulaR1C1 = «=IF(RC2=»»»»,»»»»,MAX(R22C1:R[-1]C)+1)» X ‘заносим номерYar4iAlex_ST
Используем начало последовательности
: На листе строкам манипуляции курсором черезОткрывается окно аргументов функции. то выполните настройку заполнены числами по кнопку мыши и
- Конечно, это можноCTRL (из-за возможности работать данный параметр неENTER строк? В этом
- 12342Range(«A23:A» & Range(«B» в ячейку
- : Доброе время дамы: А я для нужно присвоить №
всю плоскость листа. В поле согласно рекомендациям. После порядку. клавишу сделать вручную, отдельно, выделите любую ячейку с большими таблицами). заполнен, автоматическая нумерация
Использование инструмента Прогрессия
на клавиатуре. случае, на помощь12343 & Rows.Count).End(xlUp).Row).FormulaR1C1 =
- X = X и господа себя как-то макрос
- п/п. Делалось так: Кроме того, существует«Ссылка» того, как вы
- Урок:Ctrl вбивая номер для с заголовком фильтра
Автор: Максим Тютюшев
произведена не будет.Как и в предыдущем приходит автоматическая нумерация.2. если последняя «=IF(RC2=»»»»,»»»»,MAX(R22C1:R[-1]C)+1)» + 1 ‘увеличиваемПростая нумерация. Искал, для нумерации пунктов в первых 3х специализированная функциянужно указать ссылку удостоверились, что все
Нумерация столбцов в Microsoft Excel
Как сделать автозаполнение вна клавиатуре. Тянем каждого столбца с и дважды нажмитеИспользуем различные подходы для В конце следует случае, копируем с Давайте выясним, как цифра ячейки СНо оно работает. счётчик на ед. пытался. писал. стоках проставлялись 1,2,3. затемСТОЛБЕЦ на любую ячейку
параметры заполнены верно, Excel
Способы нумерации
маркер заполнения вправо клавиатуры. Если жеCTRL+SHIFT+L нумерации строк. нажать на кнопку помощью маркера заполнения сделать автоматическую нумерацию в активной строке И что прекрасноNext ‘следующая ячейкаДля удобства ужеЕму на разные выделялись эти ячейки
Способ 1: маркер заполнения
. Но из-за сложности первого столбца листа. жмите на кнопкуЕщё один способ нумерации
- до конца таблицы. в таблице очень(сбросьте фильтр).Пусть в ячейке «OK». формулу в нижние в программе Microsoft не равна 0, — при удаленииEnd With подготовил ячейки (они форматы ячеек (кроме и растягивалось до использования и заумности На этот момент
«OK» колонок в MicrosoftКак видим, нужная нам много колонок, этоЕсли начало последовательности ужеA2Как видим, поле этого
ячейки таблицы данного Excel. то продолжить нумерацию любой пронумерованной строкиКак «протянуть» формулу константы) A22 и числовых, конечно) наплевать. нужной строки. НО! данный вариант не крайне важно обратить. Excel подразумевает использование строка заполнена номерами займет значительное количество задано (т.е. заданвведено значение 1
до последней заполненной A23. И объединённые ячейки В процессе работы является популярным даже внимание, особенно, еслиВслед за этим столбцы кнопки по порядку. То времени. В Экселе первый элемент и (номер первой строки). таблицы будут пронумерованы этот раз выделяем Excelнапример, значение ячейки автоматом пронумеровывает вновь ячейки в столбцеA22 = 1, не мешают:
приходиться удалять строки у продвинутых пользователей. первая колонка таблицы таблицы будут пронумерованы«Заполнить» есть, была проведена
есть специальные инструменты, шаг последовательности), то
- В следующую строку автоматически. В этом не две первыеПрограмма Microsoft Excel предоставляет С 34567, количество и вновь! B? A23 =Sub RowsNum() ‘нумерация
gge29200?’200px’:»+(this.scrollHeight+5)+’px’);»>=1+R[-1]C ячеек в первом следовательно в Столбце
данная процедура занимает столбцом листа. АдресМожно даже не выделять
Способ 2: нумерация с помощью кнопки «Заполнить» на ленте
После того, как добавленаМожно также поступить несколько быстро. Давайте разберемся, следующим образом :А3 перетягивать не придется.
- одну. способов автоматической нумерации 3: правильно, но можно: Такая устроит?Протяните ячейкуВ столбце B выделенном столбце Selection. №п/п появляются лиюо больше, чем обычное ссылки можно прописать всю строку, а строка для нумерации иным образом. Заполняем как они работают.пусть в ячейке, вводим формулу =А2+1Как альтернативный вариант можноКак видим, нумерация строк
В Excel существует целый а в ячейкеТак как в формулеВ первой ячейке поставить порядку. так и в34569 & Rows.Count).End(xlUp).Row).FormulaR1C1 = последнюю заполненную и прилагаемом файле с «Range» Then Exit по порядку (при таблице введены вручную, поле. Затем вызвать окно. Выделяем всю строкуи ряд вариантов автоматическойА3 мы сослались на цифру «1», а
Но, по большому счету, функционале, а другие34570 «=IF(RC2=»»»»,»»»»,MAX(R22C1:R[-1]C)+1)» пересчитает 22 по 32 Sub удалении строк). Как
Способ 3: функция СТОЛБЕЦ
то при удалении«Ссылка» настройки прогрессии тем таблицы. Находясь во«2» нумерации столбцов. Одни
- значение 2; ячейку выше с затем выделить весь этот способ мало – более сложные,Количество копий можетYar4i_Boroda_
строку. Итого 11If Selection.Columns.Count <> сделать так, что строк таблицы нумерация, а затем кликнув же способом, который вкладке «Главная», на. Выделяем обе ячейки. из них довольновыделяем ячейки
помощью относительной ссылки, диапазон ячеек, которые чем отличается от но и заключают бить и 100: я на A23: Так нужно? номеров. 1 Then Intersect(Selection, бы все автоматически собьется. Ищем решения, по нужной ячейке. был описан выше. ленте жмем кнопку Устанавливаем курсор в просты и понятны,A2A3 то EXCEL при вы хотите пронумеровать. предыдущего и не в себе большие и 200 два раза навязал200?’200px’:»+(this.scrollHeight+5)+’px’);»>Range(«A23:A» & Range(«B» &Остается выделить ячейку Selection(1).EntireColumn).Select
этого, её координаты совпадать с теми,, которая расположена в самой правой из
сложные для восприятия.беремся за правый нижний
вышеуказанную формулу в«Прогрессия» потребностью тащить маркерПервый способ предполагает ручноеDim k As и 5 строкойRange(«B» & Rows.Count).End(xlUp) двойной клик по Next любых изменениях со нумерацию в таблице отображаются в поле. о которых мы блоке инструментов них. С зажатой Давайте подробно остановимся угол и Маркером =А3+1, затем втем же способом, через всю таблицу. заполнение первых двух String кода. — это мы маленькому чёрному квадратуApplication.ScreenUpdating = False строками?
при удалении строк
Сохранение нумерации в таблице при удалении строк в MS EXCEL
Жмем на кнопку говорили ранее, кроме«Редактирование» кнопкой мыши перетягиваем на каждом из заполнения протягиваем вниз.
=А4+1 и т.д., о котором мыКак раз третий способ строк числами.k = 0Спасибо. встали в ячейку внизу справа (вDim iCell Asvikttur – это использовать
. Появляется выпадающее меню. маркер заполнения к них, чтобы сделатьПолучаем результат как в тем самым формируя говорили выше. Но нумерации с использованиемВ выделенной под нумерациюWith ActiveCell.EntireRowbuchlotnik B1048576 (самую нижнюю ячейке A23). И Range, MrgCls As: Название темы в формулу на основе.«Предельное значение» В нём выбираем концу таблицы, но вывод, какой вариант
предыдущем случае. Если
числовую последовательность 2, на этот раз прогрессии подойдет для колонке первой строкиk = InputBox(«Количество: Не только - ячейку столбца В) Excel сам пронумерует
Автоматическая нумерация строк
Boolean окошко поиска над функции СТРОКА(). ЗаписавПосле этих действий в. В нём следует пункт на этот раз использовать продуктивнее в в ячейке 3, 4, . ничего вводить или длинных таблиц с ставим цифру – копий?», «Копирование строк») первые две строки и нажали Контрл нужное количество строкDim Nn: Nn темой. И будет формулу =СТРОКА()-СТРОКА($A$5), где выделенной ячейке появляется поставить число столбцов«Прогрессия…» на клавишу конкретном случае.
А3Другим вариантом является использование изменять не нужно. большим количеством строк. «1», во второй
If k =
вашего кода сводятся Енд и остановится в
= Selection(1)
Вам счастье.
СТРОКА($A$5) – строка цифра
в таблице. Затем.CtrlСамым популярным способом автоматическойвведено значение 3, формулы =СТРОКА()-СТРОКА($A$1). В В том числе,Первую ячейку нумеруем самым
(той же колонки) «» Then Exit к
Почему просто не ячейке A32.If Not IsNumeric(Nn)Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ(). заголовка таблицы, получим«1» жмите на кнопку
Открывается окно настроек прогрессии.нажимать не нужно. нумерации столбцов, безусловно,
т.е. задан шаг ячейке вводить данные в обычным способом, вписав
200?’200px’:»+(this.scrollHeight+5)+’px’);»>[A22]=1 написали B1048576? Потому,А в макросе Thenwebley
искомое решение (см.. Для того, чтобы«OK» Все параметры там Результат будет аналогичным.
является использования маркера последовательности равный 2,А1 поле туда цифру «1»
Выделяем эти две заполненныеFor n =Yar4i
что в Excel как это сделатьNn = InputBox(«Введите
: В А6 вбить файл примера)
пронумеровать все столбцы,
. уже должны бытьХотя первый вариант данного
заполнения. то мы получим
должен находиться заголовок«Предельное значение»
с клавиатуры. ячейки. Становимся на 1 To k: я по началу
2003 (2000 и я не знаю.
НОМЕР первого пункта»,
формулу
Другой вариант – формула становимся в еёЗаполнение будет выполнено. Последний
настроены автоматически так, способа кажется более
Открываем таблицу. Добавляем в
последовательность нечетных чисел. столбца.не придется, такНа ленте в блоке
нижний правый угол.Offset(n, 0).Insert не поверил, что
меньше) 65536 строк
Пытаюсь, но везде
«В первой ячейке
=СТРОКА()-5
=ЕСЛИ(СЖПРОБЕЛЫ(E6)<>«»;СЧЁТЗ($E$5:E5)&».»;»»)
нижний правый угол
вариант хорош для как нам нужно.
простым, но, тем
неё строку, в
Воспользуемся стандартным средством EXCEL
Для чрезстрочной нумерации используйте
Автонумерация строк простая или как «протянуть» формулу. (Макросы/Sub)
как нужный диапазон инструментов «Редактирование», который самой нижней из
.Copy Rows(.Row + можно так назначать)
buchlotnik требуется ввод конечной — текст!», 1)и протянуть вниз
В ячейке и вызываем маркер таблиц с очень
Тем не менее, не менее, многие которой будет размещаться для создания прогрессий, формулу (см. файл уже выделен. Достаточно расположен во вкладке них. Появляется маркер
n)Эта штука получше: так нужно? ячейки.If Not IsNumeric(Nn)ShipuchkaE5 заполнения. Так же, большим количеством колонок, не лишним будет
пользователи предпочитают пользоваться нумерация колонок. Для в то числе примера) =ЕСЛИ(ЕЧЁТН(СТРОКА());»»;A7+1) просто нажать на«Главная»
заполнения. Кликаем левойNext шахмат — «тыщи»200?’200px’:»+(this.scrollHeight+5)+’px’);»>With Sheets(«12345»)
Здесь нашёл искомое,
Then Exit Sub
: Спасибо, webley.содержится заголовок одного
как и в так как при проверить их состояние. вторым.
этого, выделяем любую и арифметических.Пусть, как и в
кнопку «OK»., жмем на кнопку кнопкой мыши иEnd With ходов.lr = Cells(Rows.Count, но без формулы.
End IfВсе работает, при из столбца таблицы. предыдущие разы протаскиваем его применении курсор
В блокеСуществует ещё один вариант ячейку строки, которая
вводим в ячейку предыдущем примере, вДанный вариант хорош тем,
«Заполнить»
с зажатой кнопкой,
End Sub*** 2).End(xlUp).Row А мне она
Nn = Int(Nn) удалении, но вот, Номер строки выводится
его вправо к никуда тащить не«Расположение» использования маркера заполнения.
будет находиться сразуА2
ячейку что вам не
. В появившемся меню протягиваем его внизПричем здесь Word?!ПочемуПриложил в файлеX = 1 нужна.If Nn =
при добавлении строк, с точкой на концу таблицы. Зажимать нужно.переключатель должен быть
В первой ячейке пишем под нумерацией, кликаем значение 1;
A2 придется прикидывать, из
кликаем по пункту
до конца таблицы. код не оформлен? готовый макрос.
If lr =Найденное чуть изменил:
0 Then Nn все-равно приходиться протягивать
конце. Преимущество этого клавишу
Можно также пронумеровать столбцы
установлен в позицию
цифру правой кнопкой мыши,
выделяем диапазонвведено значение 1.
скольких строк состоит
«Прогрессия»Как видим, нумерация строчек
У Вас 80%П.С. Утром научился 4 Then Exit
Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>
= 1
формулу на новые
варианта состоит в
Ctrl с помощью специальной«По строкам»
«1» тем самым вызвавA2:А6 Выделим ячейку таблица. В то. автоматически заполнилась по
замечаний, хотите получить кнопку добавлять. Sub
With Sheets(«12345») ‘с
For Each iCell ячейки. а что б том, что номера
не нужно, нажимаем функции, которая так. В параметре. С помощью маркера контекстное меню. В, в котором будут
A2
же время, вамОткрывается окно порядку. последнее?sergey1978 Cells(22, 1) =
листом «12345» In Selection все авто так строк выводятся только
только правую кнопку и называется«Тип»
копируем содержимое вправо.
этом списке выбираем содержаться номера строк;
. Удерживая клавишу нужно будет выделять
Источник
yaoleg Пользователь Сообщений: 16 |
Здравствуйте! Прикрепленные файлы
Изменено: yaoleg — 23.01.2016 17:56:23 |
gling Пользователь Сообщений: 4024 |
Cells(строка, столбец) Поменяйте номер столбца на нужный. |
Kuzmich Пользователь Сообщений: 7998 |
В С2 только не забудьте поставить 1 |
yaoleg Пользователь Сообщений: 16 |
#4 23.01.2016 18:13:24
Так?
Но в столбце А не было1 и скрипт автоматом ставил номера. Почему для колонки С нужно ставить первую цифру? |
||||||
gling Пользователь Сообщений: 4024 |
#5 23.01.2016 18:14:17 Без единицы можно так
|
||
yaoleg Пользователь Сообщений: 16 |
gling, Kuzmich, Большое Вам спасибо за помощь!!! Все получилось! |
yaoleg Пользователь Сообщений: 16 |
Здравствуйте! Макрос хорошо работает, но бывают случаи когда нужно «впихнуть» дополнительный номер регистрации между строк, например: 2-а. В таком случаи макрос ставит следущий номер 4, а нужно чтобы ставил 3, 4, 5… Спасибо! |
Kuzmich Пользователь Сообщений: 7998 |
#8 27.01.2016 01:29:55
|
||
yaoleg Пользователь Сообщений: 16 |
Спасибо в таблицу значении всталяется правильно. Но как можно этот результат работы этого кода присвоить TextBox? Нужно чтобы нумерация отображалась на форме и вставлялась в таблицу. Прикрепленные файлы
Изменено: yaoleg — 27.01.2016 08:43:09 |
SuperCat Пользователь Сообщений: 2737 |
#10 27.01.2016 08:48:08
Чёт у вас вопросы по нарастающей. Аппетит приходит во время еды? Изменено: SuperCat — 30.01.2016 00:36:20 There is no knowledge that is not power |
||||
Не совсем понятно… м.б. так? Прикрепленные файлы
Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
yaoleg Пользователь Сообщений: 16 |
Когда уже начинаеш работать с программой, тогда и появляются всякие несоотвествия. Первый макрос очень хорош если нет этих 2-а, 3-а — они очень редко встречаются, но все же встречатся. Ну и когда их добавляеш нумерация смещается. Второй макрос этот вопрос решает, но я никак не могу понять как эго прицепить к форме, чтобы при вводе документа отображаля номер на самой форме. |
yaoleg Пользователь Сообщений: 16 |
Так, но на форме нумерация отображается не правильно. |
Михаил Лебедев Пользователь Сообщений: 2856 |
#14 27.01.2016 09:01:44
В форме нет поля для ввода документа. При вводе документа — Куда? Когда? Как? Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
yaoleg Пользователь Сообщений: 16 |
Я имею ввиду ввод номеров с текстбокса в колонку «C» по возрастающей. Нумерация заканчивается на 18, а в текстбоксе отображается уже 22, а должно быть 18. Изменено: yaoleg — 27.01.2016 09:31:41 |
Михаил Лебедев Пользователь Сообщений: 2856 |
#16 27.01.2016 10:11:26 а так?
Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Kuzmich Пользователь Сообщений: 7998 |
#17 27.01.2016 11:24:48
В текстбоксе надо отображать не номер строки, а содержимое ячейки
|
||||
yaoleg Пользователь Сообщений: 16 |
#18 27.01.2016 15:12:33 Спасибо Михаил Лебедев, Kuzmich, все получилось. |
Автоматическая нумерация строк в Excel по порядку с помощью VBA
Каждый знает, как проставить нумерацию строк в excel. Для этого достаточно поставить первые две цифры, выделить их и потянуть за появившийся в правом нижнем углу выделенной области черный квадрат. Все нумерация готова.
Но когда возникает необходимость делать эту процедуру часто, или ввиду обилия нескольких разделов и подразделов – ручная нумерация строк в таблице excel превращается в скучную рутинную работу. И гораздо приятнее написать макрос нумерации строк excel и наслаждаться результатом через долю секунды.
Работоспособный макрос нумерации строк в excel по порядку приведен ниже:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Обновить нумерацию
If ActiveCell.Column = 10 And Cells(ActiveCell.Row, ActiveCell.Column).Value = "Обновить нумерацию" And ActiveCell.Row = 2 Then
' ссылка на лист книги в котором обновляем нумерацию
Set pr = Workbooks("planero-s-avtomaticheskoj-numeraciej-strok.xlsm").Worksheets("Проекты")
i = 0 ' для работоспособности цикла
j = 1 ' номер задачи
k = 1 ' номер подзадачи
' проходим вниз по странице до тех пор, пока есть записи в ячейке "B3" или "C3"
Do While pr.Range("B3").Offset(i, 0) > 0 Or pr.Range("D3").Offset(i, 0) > 0
' если ячейка "В3"+i содержит текст
If pr.Range("B3").Offset(i, 0) > 0 Then
' нумеруем ее
pr.Range("A3").Offset(i, 0) = j
' выделяем номер жирным
pr.Range("A3").Offset(i, 0).Font.Bold = True
' увеличиваем переменную j на единицу
j = j + 1
' обнуляем номер подзадачи
k = 1
' если ячейка "B3"+i пустая, следовательно мы имеем дело с подзадачей
Else
' если ячейка "D3"+i содержит текст
If pr.Range("D3").Offset(i, 0) > 0 Then
' нумеруем ее
pr.Range("C3").Offset(i, 0) = k
' увеличиваем номер подзадачи на единицу
k = k + 1
End If
End If
' увеличиваем i на +1 чтобы проверить следующию ячейку (расположенную ниже) на наличие записи
i = i + 1
Loop
' убираем курсор с кнопки
pr.Cells(ActiveCell.Row, ActiveCell.Column - 2).Select
End If
End Sub
Первым делом привязываем запуск макроса при нажатии на кнопку «Обновить нумерацию». Далее запускаем цикл и выполняем его до тех пор, пока ячейка B3 и D3 содержит текст. При этом последовательно перемещаемся к ниже идущим ячейкам от B3 и D3, используя Offset и переменную i: .offset(i, 0)
. Одновременно с этим, нумеруем задачи (если B3+i содержит текст) и подзадачи (если B3+i не содержит текст, при этом содержит текст D3+i). Ну и напоследок убираем курсор с кнопки «Обновить нумерацию».
Саму экселевсую книгу с макросом автоматической нумерации можно скачать по этой ссылке. На этом все. Остались вопросы – задавайте их в комментариях. С другими кейсами по автоматизации можно ознакомиться здесь.
Комментарии 2
© планеро.ru
Olya1985 32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
||||
1 |
||||
Макрос для автоматической нумерации строк07.01.2011, 13:27. Показов 32934. Ответов 15 Метки нет (Все метки)
Подскажите, пожалуйста, как исправить макрос чтобы строки нумеровались автоматически на листе, а также при удалении строки нумерация также смещалась.
0 |
Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
|
07.01.2011, 17:40 |
2 |
А чем же вас этот код не устраивает конкретно?
0 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 17:42 [ТС] |
3 |
он зависает после нумерации первой строки…
0 |
Vlanib Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
||||
07.01.2011, 18:03 |
4 |
|||
Естественно! Исправьте макрос следующим образом:
0 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 18:07 [ТС] |
5 |
Vlanib, теперь строки не нумеруются…
0 |
Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
|
07.01.2011, 18:15 |
6 |
Скиньте ваш файлик.
0 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 18:24 [ТС] |
7 |
файлик прилагаю
0 |
Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
|
07.01.2011, 18:30 |
8 |
Видимо не приложился…
0 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 18:32 [ТС] |
9 |
еще раз попробую…
0 |
Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
|
07.01.2011, 18:56 |
10 |
Так, Оленька, давайте обстоятельно. В этом вашем посте вы просили перевести формулу на ВБА, что я и сделал дословно. Данная вами формула возвращает в ячейку количество аргументов в столбце «D». Если бы вы изначально правильно сформулировали задачу, то и вопросов было бы меньше.
1 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 19:01 [ТС] |
11 |
Vlanib, спасибо! только осталась еще одна проблема.. при удалении строки в столбце B номер все равно остается. при использовании же формулы он исчезает вместе с удаленным текстом. можно ли в макросе сделать также?
0 |
Vlanib Частенько бываю 749 / 330 / 42 Регистрация: 20.06.2007 Сообщений: 854 |
||||
07.01.2011, 19:25 |
12 |
|||
1 |
32 / 2 / 0 Регистрация: 31.12.2010 Сообщений: 91 |
|
07.01.2011, 20:26 [ТС] |
13 |
теперь отлично. спасибо! Добавлено через 13 минут извиняюсь, но еще одна небольшая проблемка. последнее введенное значение не пронумеровывается. как можно это исправить? Добавлено через 16 минут прошу мое предыдущее сообщение считать недействительным. у меня овт еще вопрос. я не совсем понимаю для чего используется Application.EnableEvents = False или True. Не могли бы вы вкратце объяснить? Добавлено через 6 минут
0 |
1904 / 781 / 31 Регистрация: 11.02.2010 Сообщений: 1,567 |
|
07.01.2011, 22:41 |
14 |
EnableEvents, как следует из перевода, отключает или включает обработку событий приложения (т. е события могут либо игнорироваться, либо при возникновении событий могут вызываться соответствующие обработчики этих событий) http://support.microsoft.com/kb/213720 Не по теме:
я что то порядком запуталась ВОЗМОЖНО, выполнение кода было остановлено пользователем между инструкциями Application.EnableEvents = False/True и события перестали обрабатываться вплоть до повторного открытия приложения
0 |
91 / 1 / 1 Регистрация: 09.01.2013 Сообщений: 2 |
|
09.01.2013, 11:15 |
15 |
Сообщение было отмечено как решение РешениеУважаемый Vlanib Спасибо — Очень интересное решение , а можно дописать макрос чтоб в » A » счет шел с первой пустой ячейки ( так как обычно бывают шапки в таблицах — получится макрос на все случаи жизни
0 |
8 / 8 / 0 Регистрация: 22.02.2012 Сообщений: 159 |
|
20.02.2021, 14:05 |
16 |
Vlanib, а как переписать макрос, чтобы он нумеровал строку не по приницпу «количество столбцов выше+1», а «значение в предыдущей ячейке+1». У меня нумерация строк просто 10001, 10002..
0 |
макрос Нумерация списка |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |