Чтобы пронумеровать по порядку строки, полученные после применения фильтра, необходимо:
- 1. В первую ячейку отфильтрованного списка внести функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ, выбрать 103-й номер функции (СЧЁТЗ) кликнув 2 раза по номеру
2. Нажать fx в строке формул и указать в Ссылка1 соседнюю ячейку в этой же строке (в примере – наименования товаров).
3. Ввести «:» и еще раз указать эту же ячейку, создав диапазон из одной ячейки.
4. Первую границу диапазона фиксируем (выделяем адрес и нажимаем на клавиатуре F4)
5. Нажимаем «OK» и протягиваем формулу до конца списка.
Мы получаем активную нумерацию. Даже если вы отсортируете значения в других столбцах, нумерация сохранится.
Если материал Вам понравился или даже пригодился, Вы можете поблагодарить автора, переведя определенную сумму по кнопке ниже:
(для перевода по карте нажмите на VISA и далее «перевести»)
При применении
фильтра
строки скрываются целиком. Если в таблице имелась нумерация строк, то она будет сбита. Но, есть способ обойти эту проблему.
Пусть имеется таблица с нумерацией строк (в столбце
№
введены числа от 1 до 16).
Если к таблице применить
фильтр
(нажав в строке заголовков таблицы
CTRL+SHIFT+L
и установив критерии отбора), то нумерация строк будет сбита (см. столбец
А
).
Для того, чтобы сохранить нумерацию строк, используем вместо последовательности констант (от 1 до 16) — формулу.
Решение основано на использовании функции
ПРОМЕЖУТОЧНЫЕ.ИТОГИ()
, которая «чувствует», когда строка скрыта
фильтром
.
Столбец с нумерацией расположим в столбце
А
(заголовок таблицы разместим в строке
6
). Полезные данные, которые вводятся БЕЗ ПРОПУСКОВ, расположим в столбце
В
(см.
Файл примера
):
Записав в ячейке
A
7
формулу
=ЕСЛИОШИБКА(ЕСЛИ(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3;B7);A6+1;A6);1)
и скопировав ее в ячейки ниже, получим желаемый результат. Если строка скрыта, то функция
ПРОМЕЖУТОЧНЫЕ.ИТОГИ()
возвращает 0 (ЛОЖЬ) и счетчик номера строки не увеличивается на 1, а остается, как у предыдущей строки.
После применения фильтра нумерация строк таблицы автоматически изменится.
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
1 |
|
Нумерация после сортировки…19.09.2011, 21:19. Показов 11642. Ответов 13
Доброго всем времени суток !!!
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
19.09.2011, 21:21 |
2 |
Судя по всему Вам подойдёт формула ЗЫ Если нет — давайте пример.
0 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
19.09.2011, 21:34 [ТС] |
3 |
Не то. Номер п/п отображает номер строки. То есть строки которые скрыты не видны и соответственно нумерация не правильная.
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
19.09.2011, 21:36 |
4 |
ЗЫ Если нет — давайте пример. …..
0 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
19.09.2011, 21:48 [ТС] |
5 |
Книга1.rar
0 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
19.09.2011, 22:43 [ТС] |
6 |
Неужели с этим никто не сталкивался?
0 |
730 / 406 / 95 Регистрация: 19.12.2010 Сообщений: 756 |
|
19.09.2011, 22:44 |
7 |
как вариант.
1 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
20.09.2011, 10:49 [ТС] |
8 |
как вариант. Спасибо. Как вариант — работает отлично. Завтра на работе попробую всё это воплотить в своих таблицах. Я и предполагал что без написания макросов не обойдётся. А в этом деле я не очень силён. Добавлено через 11 часов 55 минут
0 |
88 / 22 / 1 Регистрация: 12.09.2011 Сообщений: 59 |
|
20.09.2011, 12:15 |
9 |
Без макросов
2 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
20.09.2011, 16:44 [ТС] |
10 |
Без макросов Спасибо. Попробую.
0 |
0 / 0 / 0 Регистрация: 21.07.2009 Сообщений: 55 |
|
22.09.2011, 11:45 [ТС] |
11 |
Метод от 19vitek
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
10.01.2014, 09:41 |
13 |
Как вариант Код =ЕСЛИ(ЕТЕКСТ(B3);ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;$B$3:B3);"")
1 |
0 / 0 / 0 Регистрация: 27.03.2017 Сообщений: 1 |
|
27.03.2017, 18:11 |
14 |
Михаил, спасибо! То, что мне было нужно, просто, но гениально!
0 |
{quote}{login=R Dmitry}{date=01.06.2010 12:33}{thema=Re: Re: Автоматическая нумерация строк, устойчивая к сортировке}{post}Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B:B]) Is Nothing _
Then
Dim ilastrow As Long
With Sheets(«Лист1»)
ilastrow = .Cells(Rows.Count, 2).End(xlUp).Row
.Cells(ilastrow, 1) = Val(.Cells(ilastrow — 1, 1)) + 1
End With
End If
End Sub
в Лист1, id первый столбец, событие во втором{/post}{/quote}
Макрос — это, конечно, хорошо. Делал макрос, работавщий на уровне всей книги и обслуживавший в ней все таблицы, в которых встречается столбец с определенным именем («#»). НО!
Когда макрос записывает значение ячейки, undo history обнуляется. Что неприемлемо для пользователя. Представьте, пользователь вводит данные, используя TAB, и каждый раз, когда создается новая строка и срабатывает макрос, отмена последних действий становится невозможна.
Еще пробовал написать макрофункцию, которая использует CustomProperties листа, добавляя в них новое свойство (аналогично базам данных). При каждом обращении к ней эта функция увеличивает значение такого свойства на 1 и возвращает его. Работает. НО!
При добавлении новой строки excel пересчитывает все формулы столбца с этой функцией и получается, что айдишники каждый раз раздаются заново. :(((
Автоматическая нумерация строк
В отличие от других программ Microsoft 365, Excel не предоставляет кнопку для автоматического номера данных. Однако можно легко добавить последовательные числа в строки данных путем перетаскивания маркер заполнения для заполнения столбца последовательностью чисел или с помощью функции СТРОКА.
Совет: Если необходима более совершенная система автоматической нумерации и на компьютере установлено приложение Access, можно импортировать данные Excel в базу данных Access. В ней можно создать поле, которое автоматически генерирует уникальный номер при добавлении в таблицу новой записи.
В этой статье
-
Заполнение столбца последовательностью чисел
-
Нумерация строк с помощью функции СТРОКА
-
Отображение или скрытие маркера заполнения
Заполнение столбца последовательностью чисел
-
Выделите первую ячейку в диапазоне, который необходимо заполнить.
-
Введите начальное значение последовательности.
-
Введите значение в следующей ячейке, чтобы задать образец заполнения.
Совет: Например, если требуется задать последовательность 1, 2, 3, 4, 5…, введите в первые две ячейки значения 1 и 2. Если необходимо ввести последовательность 2, 4, 6, 8…, введите значения 2 и 4.
-
Выделите ячейки, содержащие начальные значения.
Примечание: В Excel 2013 и более поздних версиях кнопка Быстрый анализ отображается по умолчанию при выборе нескольких ячеек, содержащих данные. Для завершения этой процедуры кнопку можно проигнорировать.
-
Перетащите маркер заполнения в диапазон, который нужно заполнить.
Примечание: По мере перетаскивания маркера заполнения через ячейки Excel показывает предварительное значение. Чтобы изменить образец, перетащите маркер заполнения, удерживая нажатой правую кнопку мыши, а затем выберите образец.
Чтобы ввести последовательность в возрастающем порядке, перетащите маркер вниз или вправо. Чтобы ввести последовательность в убывающем порядке, перетащите маркер вверх или влево.
Совет: Если маркер заполнения не виден, возможно, его сначала необходимо отобразить. Дополнительные сведения см. в статье Отображение или скрытие маркера заполнения.
Примечание: При добавлении, перемещении или удалении строк эти числа автоматически не обновляются. Последовательную нумерацию можно обновить вручную, выбрав два числа в правильной последовательности и перетащив маркер заполнения в конец нумерованного диапазона.
Нумерация строк с помощью функции СТРОКА
-
Введите в первую ячейку диапазона, который необходимо пронумеровать, формулу =СТРОКА(A1).
Функция СТРОКА возвращает номер строки, на которую указана ссылка. Например, функция =СТРОКА(A1) возвращает число 1.
-
Перетащите маркер заполнения , охватив диапазон, который необходимо заполнить.
Совет: Если маркер заполнения не виден, возможно, его сначала необходимо отобразить. Дополнительные сведения см. в статье Отображение или скрытие маркера заполнения.
-
Эти числа обновляются при сортировке данных. При добавлении, перемещении или удалении строк последовательность может быть прервана. Последовательность можно обновить вручную, выбрав два числа в правильной последовательности и перетащив маркер заполнения в конец нумерованного диапазона.
-
Если вы используете функцию СТРОКА и хотите, чтобы числа вставлялись автоматически при добавлении новых строк данных, преобразуйте диапазон данных в таблицу Excel. Все строки, добавленные в конец таблицы, последовательно нумеруются. Дополнительные сведения см. в статье Создание и удаление таблицы Excel на листе.
Для ввода определенных последовательных числовых кодов, например кодов заказа на покупку, можно использовать функцию СТРОКА вместе с функцией ТЕКСТ. Например, чтобы начать нумерованный список с кода 000-001, введите формулу =ТЕКСТ(СТРОКА(A1),»000-000″) в первую ячейку диапазона, который необходимо пронумеровать, и перетащите маркер заполнения в конец диапазона.
Отображение или скрытие маркера заполнения
По умолчанию маркер заполнения отображается, но его можно включить или отключить.
-
В Excel 2010 и более поздних версиях перейдите на вкладку Файл и выберите пункт Параметры.
В Excel 2007 нажмите кнопку Microsoft Office , а затем выберите Пункт Параметры Excel.
-
В категории Дополнительно в разделе Параметры правки установите или снимите флажок Разрешить маркеры заполнения и перетаскивание ячеек, чтобы отобразить или скрыть маркер заполнения.
Примечание: Чтобы предотвратить замену имеющихся данных при перетаскивании маркера заполнения, по умолчанию установлен флажок Предупреждать перед перезаписью ячеек. Если не требуется, чтобы приложение Excel выводило сообщение о перезаписи ячеек, можно снять этот флажок.
См. также
Полные сведения о формулах в Excel
Рекомендации, позволяющие избежать появления неработающих формул
Поиск ошибок в формулах
Сочетания клавиш и горячие клавиши в Excel
Функции ссылки и поиска (справка)
Функции Excel (по алфавиту)
Функции Excel (по категориям)