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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2017, 12:00   #1
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию Циклический рассчет по листам

Доброго времени суток, уважаемые форумчане!

Есть файл, в котором название листов, соответствуют номерам кассовых аппаратов расположенные в разных местах. Ежедневно происходит загрузка из отчета (реестра), в котором множество кассовых аппаратов с разными данными, загрузить в данный файл, что уже сделано (если в реестре есть номер кассы которому соответствует название листа в файле, то данные загружаются в этот лист следующей строкой). Однако, данный файл урезан по количеству кассовых аппаратов, на самом деле, листов в файле множество...
Так вот, нужно сделать расчет на все листы, т.е. выполняется одна и та же процедура расчета на каждый лист. Писал макрос по расчету "рекордером", и макрос получился большой и когда я его запускал, то программа зависала... Пришлось макрос, поделить на несколько частей (по 10 - 15 листов). Получился макрос который я назвал - "РассчетА"

А можно в макросе "РассчетА", как-то указать перечень листов, к которым будет применен макрос, чтобы увеличить количество листов, а не прописывать в самом макросе название каждый раз название листа?
Вложения
Тип файла: zip Kassa.zip (420.5 Кб, 12 просмотров)
amadeus017 вне форума Ответить с цитированием
Старый 22.11.2017, 17:23   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Расчет можно оптимизировать разными способами:
1. Ввод формул сразу на несколько листов. Попробуйте например в новой книге, в которой есть листы "Лист1", "Лист3", выполнить макрос
Код:
Sub Макрос1()
    Sheets(Array("Лист1", "Лист3")).Select
    Range("A1:A9,C1:C9").Select
    Selection.FormulaR1C1 = "=RC[1]*2"
End Sub
Так же можно на нескольких листах сразу очищать диапазоны (Selection.ClearContents).
К сожалению, устанавливать правила условного форматирования на нескольких листах сразу нельзя.
2. Вводить формулу можно сразу в диапазон (см. пример выше), а не вводить в первую ячейку и потом ее копировать. Чтобы сделать это вручную, выделите диапазон, введите формулу в первую ячейку и нажмите Ctrl+Enter. При этом неважно, формула в стиле R1C1 или А1.
Например, этот кусок
Код:
    Range("A29:B29").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[2]="""","""",TEXT(DATEVALUE(RC[2]),""ДДД""))"
    Range("A29:B29").Select
    Selection.Copy
    Range("A30:B100").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
можно переделать так - для работы с несколькими листами
Код:
    Range("A29:B100").Select
    Selection.FormulaR1C1 = "=IF(RC[2]="""","""",TEXT(DATEVALUE(RC[2]),""ДДД""))"
А если работать с листами по очереди, Selection вообще не нужен
Код:
    Range("A29:B100").FormulaR1C1 = "=IF(RC[2]="""","""",TEXT(DATEVALUE(RC[2]),""ДДД""))"
3. Строка 100 - это Вы явно берете с запасом. Если работать с листами по очереди, для каждого листа можно определить последнюю строку и работать только с нужным диапазоном. При этом из формул можно убрать проверку на пустоту.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.11.2017, 11:28   #3
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Спасибо!
Буду пробовать
amadeus017 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рассчет чисел RussianGuy Помощь студентам 2 22.09.2014 23:53
Рассчет остатка eguana JavaScript, Ajax 0 08.08.2014 20:25
Рассчет IP-адресов sunny_alice Помощь студентам 5 12.06.2014 11:04
рассчет серверов Enaken Помощь студентам 14 22.09.2012 13:07
рассчет в таблице new_here Microsoft Office Access 4 21.10.2010 18:27