Я строю график и хотел бы, чтобы годы автоматически увеличивались в соответствии с месяцами.
Вот моя текущая шкала времени:
У меня есть кнопка, которая добавляет +1 столбец = (+1 месяц) , Поэтому, если я нажимаю кнопку, запускается следующий макрос:
With Sheet1
.Range("K:K").Copy
.Columns("L:L").Insert Shift:=xlToRight
End With
На скриншоте, прикрепленном после месяца снова January
, год уже должен быть 2021.
Я попытался сделать это:
B33
=YEAR(OtherData!$P$17)
C33 (все остальные ячейки справа)
=YEAR(OtherData!$P$17)+IF(B34="January";1;0)
это работает, но тогда я получаю 2021 только в М33. Как сделать, чтобы формула копировала предыдущую ячейку, пока в строке 34 не будет достигнут January
?
РЕДАКТИРОВАТЬ:
Кажется, что это работает C33 (все остальные ячейки справа):
=IF(C34="January";YEAR(OtherData!$P$17)+IF(C34="January";1;0);B33)
, но после запуска VBA все снова запуталось ...
РЕДАКТИРОВАТЬ 2:
Я думаю, что формула теперь верна, но макрос нужно как-то редактировать, чтобы копировать вставку с конца все время, а не работать с определенными ячейками, такими как K и L.
ИЛИ
Просто заполните диапазон C33 -> справа формулой =IF(C34="January";YEAR(OtherData!$P$17)+IF(C34="January";1;0);B33)
после запуска макроса. Надо найти UsedRange
наверное как-то.
РЕДАКТИРОВАТЬ 3:
Это похоже на рабочее решение:
Sub Add_One_Year()
Dim lColumn As Long
With Sheet1
.Range("L:L").Copy
.Columns("K:K").Insert Shift:=xlToRight
End With
lColumn = CashflowSheet.Cells(33, Columns.Count).End(xlToLeft).Column
Sheet1.Range(Cells(33, 3), Cells(33, lColumn)).Formula = "=IF(C34=""January"",YEAR(OtherData!$P$17)+IF(C34=""January"",1,0),B33)"
'MsgBox ("The last used column is: " & lColumn)
End Sub