Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 21:50   #31
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

SAS888
Уважаемые форумчане.

Пример, предложенный SAS888 краток и работает.
Здорово!

Но есть небольшой вопросик

Код:
Если на рабочем листе есть хотя бы одна ячейка, содержащая формулу, то можно использовать событие пересчета ячеек листа
Объясните, пожалуйста - немного подробнее (это может быть не только функция Сегодня(), а любая другая - Если(), например)
Далее.

В этот пример мною были добавлены столбцы и строки.
Фильтрация производится с помощью столбца "условие" (0 или 1)
Автонумерация планировалась производится по столбцу "№ п/п"
Внешний вид и пример прилагаю.
Диапазон
Range([A2], Cells(Rows.Count, 1).End(xlUp))

изменен на
Range([C5], Cells(Rows.Count, 1).End(xlUp))
Но пересчет распространился на все ячейки листа.

В целом у меня получилась такая абракадабра

что пришлось пример выкладывать без кода в модуле.
Уже пожалел, что сразу об этом не написал.

Код файла отдельно
Код:
Private Sub Worksheet_Calculate()
    Dim cell As Range, i As Long: i = 1
    Application.ScreenUpdating = False: Application.EnableEvents = False
    For Each cell In Range([C5], Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible)
        cell = i: i = i + 1
    Next
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub
Изображения
Тип файла: jpg 3.JPG (36.0 Кб, 134 просмотров)
Вложения
Тип файла: rar Книга3.rar (7.0 Кб, 13 просмотров)

Последний раз редактировалось Sergey112233; 12.01.2011 в 22:30.
Sergey112233 вне форума Ответить с цитированием
Старый 13.01.2011, 09:53   #32
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Объясните, пожалуйста - немного подробнее (это может быть не только функция Сегодня(), а любая другая - Если(), например)
Объясняю подробнее:
Для правильной работы необходимо использовать пересчитываемые (volatile) функции, типа =ТДАТА(), =СЕГОДНЯ(), =СЛЧИС(), =СЛУЧМЕЖДУ(), =ИНФОPM(), =ЯЧЕЙКА(), =ДВССЫЛ(), =СМЕЩ(), или формулы, которые ссылаются на фильтруемый диапазон, например =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;A:A). Так, например, в Вашем файле есть ячейки (столбец "B"), содержащие такие формулы (ссылающиеся на фильтруемый диапазон). Этого вполне достаточно.


Цитата:
Диапазон Range([A2], Cells(Rows.Count, 1).End(xlUp))
изменен на Range([C5], Cells(Rows.Count, 1).End(xlUp))
А вот это Ваша ошибка. Вы задаете диапазон перенумерации с ячейки "C5" до последней заполненной ячейки в столбце "A". А нужно в этом же столбце. Например
Код:
Range([C5], Cells(Rows.Count, 3).End(xlUp))
или
Код:
Range([C5], Cells(Rows.Count, "C").End(xlUp))
Пример во вложении.
Вложения
Тип файла: rar Книга3_2.rar (8.8 Кб, 22 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 13.01.2011 в 09:55.
SAS888 вне форума Ответить с цитированием
Старый 13.01.2011, 12:25   #33
aoaoo
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 29
Радость

Цитата:
Сообщение от kuklp Посмотреть сообщение
Можно формат ячеек: 0"_00_01".
Без разницы формулы или константы.
так в дальнейшем формат ячейки будет текстовым.
а как сделать что бы строки в дальнейшем были фактическими?
aoaoo вне форума Ответить с цитированием
Старый 13.01.2011, 13:50   #34
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

SAS888,
уважаемые форумчане.
Очень приятно получить квалифицированное объяснение.
Большое спасибо.
Такой пример в книгу хорошо было бы занести!!!
Код приложил к реальной базе. Отрабатывает отлично: из 23000 записей выбирает 100 из них и перенумеровывает за несколько секунд. Это огромный шаг вперед по сравнению с началом топика. Здорово!!!

Позвольте добавить еще одно слово (профилактика от повторного наступания на грабли) . Иногда при обработке файла наблюдается следующая ситуация. При обновлении лист с формулами обрабатывается быстрее, чем осуществляются те же действия, но прописанные макросом. И, бывает наоборот, макрос обрабатывает лист быстрее формул. Конечно, в каждом конкретном случае нужно подробно разобраться.
Так вот о слове : есть ли какие-то общие рекомендации по применению формул и макросов?
Sergey112233 вне форума Ответить с цитированием
Старый 13.01.2011, 14:31   #35
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от Sergey112233 Посмотреть сообщение
есть ли какие-то общие рекомендации по применению формул и макросов?
Есть. Если диапазон невелик можно и то и другое. В противном случае только макросы.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 13.01.2011, 14:40   #36
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от aoaoo Посмотреть сообщение
так в дальнейшем формат ячейки будет текстовым.
а как сделать что бы строки в дальнейшем были фактическими?
Вы о чем? Проверьте.
Изображения
Тип файла: jpg 2010-12-22_043633.jpg (114.3 Кб, 62 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 13.01.2011, 14:55   #37
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

kuklp,
Спасибо.
Sergey112233 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая нумерация столбцов с учетом скрытых cons Microsoft Office Excel 12 27.04.2010 12:25
Автоматическая нумерация в таблице word SilverSmallFish Microsoft Office Word 5 27.04.2010 06:43
Автоматическая нумерация строк в DBGrid Len@09 БД в Delphi 10 02.11.2009 17:41
автоматическая нумерация Screame Microsoft Office Excel 4 01.08.2009 00:28
Автоматическая нумерация документов Лука Microsoft Office Excel 5 15.06.2009 21:59