Страницы: 1
RSS
Макрос накопление посуточно в течении года
 
Здравствуйте, в приложенном файле макросом выполняется накопление за текущие сутки в течении месяца. Чтобы шло накопление в следующем месяце, я меняю интервал в макросе. Можно ли выставить в макросе накопление так, чтобы не менять интервала в течении года? Заранее спасибо.
 
ваш макрос лишь копирует цифры из 6-й строки в строку (текущее число месяца + 37) и всё. Какой интервал вы меняете в этом коде и когда?

Код
Sub перенос_год()
Dim today1 As Long, j As Long

    With Sheets("Лист1")
        .Select
        today1 = Day(.Range("B6").Value)  'Day(.Cells(6, 2).Value)
        ' формулы переноса
        For j = 1 To 8
            .Cells(today1 + 37, 2 + j).Value = .Cells(6, 2 + j).Value
        Next j
        .Range("A1").Select
    End With
 End Sub

пока ваш код можно заменить на вот этот

Код
Sub test()
Dim today1 As Long
    With Sheets("Лист1")
        today1 = Day(.Range("B6").Value)
        .Range("C6:J6").Copy .Cells(today1 + 37, 3)
    End With
End Sub
Изменено: New - 05.02.2021 15:59:19
 
Меняю первого числа каждого месяца +37 это в феврале, в январе было +6, в марте будет +65 и т.д. А хочется не менять каждый месяц, а чтоб копировались данные до конца года в зависимости не только от дня даты, но и от месяца
 
Евгения а вам нужны формулы в первых 2 столбцах?
Если не нужны то можно так
 
Цитата
Евгений Смирнов написал:
Евгения а вам нужны формулы в первых 2 столбцах?
Здравствуйте, да, формулы нужны. Этот файл сделала для примера, отличается от рабочего. И информация должна накапливаться по датам по порядку. Т.е. если я ставлю например 01.03.21 данные встают в строку с датой 01.03.21, а если след.дату я ставлю 05.03.21 то данные должны встать через 3 строки в 05.03, а не в следующую строчку. Надеюсь понятно объяснила :oops:  
 
Тогда так
Изменено: Евгений Смирнов - 01.03.2021 10:06:24
 
Да ячейку В6 в файле сделал именованной (data). Наверно лучше даже так.
Код
Sub Zapis()
Dim Rg1 As Range, nData As Date
nData = #1/1/2021#
Set Rg1 = [Data].CurrentRegion.Rows(1)
Set Rg1 = Range([Data].Offset(, 1), Rg1.Cells(Rg1.Cells.Count))
Rg1.Copy Rg1.Offset([Data] - nData + 1)
End Sub

Вот и я уже привык писать лишнее. Можно и в 1 строчку

Код
Sub Zapis2()
Dim nData As Date: nData = #1/1/2021#
[Data].Offset(, 1).Resize(, 8).Copy [Data].Offset([Data] - nData + 1, 1)
End Sub
Изменено: Евгений Смирнов - 01.03.2021 13:06:32
 
Да, так очень здорово, спасибо большое!
Страницы: 1
Наверх