Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Typyk_MakTo от 20.02.2018, 05:22

Название: Макрос копирования значений ячеек из одной книги в другую с привязкой к дате
Отправлено: Typyk_MakTo от 20.02.2018, 05:22
Здравствуйте, профессионалы и начинающие. Прошу помощи в написании макроса по копированию десяти значений (не формул а именно значений) из активного листа Книги 1 в активный лист Книги 2. Примеры книг во вложении. От макроса необходимо, чтобы все значения копировались в Книгу 2 в необходимую строку, зависящую от текущей даты на компьютере. Пример: Если запустить макрос 2го числа любого месяца, то значения должны скопироваться в сторку "В3" Книги 2, отвечающую за прошлый день 1ого числа месяца. При запуске макроса 3го числа любого месяца, значения должны скопироваться в строку "В4" Книги 2, отвечающую за прошлый день 2ого числа месяца и т.д. Из Книги 1 значения с первого по четвертое, а также с пятого по восьмое можно скопировать в Книгу 2, применив специальную вставку типа "транспонирование", значения 9 и 10 копируются в разные адреса (не соседние) ячеек Книги 2. В Книге 2 пропуски столбцов F, J, L и строк 13, 24 сделал специально, чтобы впоследствии легче применить макрос к своему рабочему файлу. Я, кончено же, читал много форумов, понимаю принцип макроса типа выделения ячейки, ее копирования, активации или открытия книги куда происходит копирование, снова выделение ячейки и вставка. Так можно сделать для каждого из десяти значения, но я не знаю как сделать привязку к текущей дате на компьютере а так же можно применить транспонирование и сделать макрос проще. В общем, вся надежда на Вас, уважаемые "гуру" экселя. Заранее спасибо за помощь :)
Название: Re: Макрос копирования значений ячеек из одной книги в другую с привязкой к дате
Отправлено: boa от 20.02.2018, 10:47
Добрый день,
в макросе, для работы с датой вам могут понадобиться функции
Sub test()
    Debug.Print Date
    Debug.Print Day(Date)
    Debug.Print Weekday(Date)
End Sub

а вообще-то значения можно функциями подтянуть
=IF(RC1=DAY(TODAY());IFERROR(INDEX('[Книга 1.xlsx]Лист1'!R2C2:R11C2;MATCH(R2C;'[Книга 1.xlsx]Лист1'!R2C1:R11C1;0));"");"")