У меня есть 3 таблицы, которые я хотел бы изменить количество строк, как я обновляю количество лет. Менять ли я конец года или год начала, где таблица может сгибаться. Проблема, с которой я столкнулся до сих пор, состоит в том, что если я увеличу таблицу, добавленная строка будет после конечного года, а не ниже (НЕ включена в фактическую таблицу). Поэтому, может быть, сдвинуть таблицу вниз и скопировать формулу до конца года?
Это то, что я до сих пор:
Private Sub Worksheet_change(ByVal Target As Range)
Dim StartYear, EndYour As Range
Dim UpdateTable As ListObject
Dim UpdateTableInput As ListObject
Dim NrOfRows, OldNrOfRows As Integer
' Set some ranges
Set StartYear = Worksheets("Sheet1").Cells(1, 2)
Set EndYear = Worksheets("Sheet1").Cells(2, 2)
Dim i As Integer
For i = 1 To 3
Set UpdateTable = Worksheets("Sheet2").ListObjects("Table" & i)
' Check if start or end years have changed
If (Not Intersect(StartYear, Target) Is Nothing) Or (Not Intersect(EndYear, Target) Is Nothing) Then
' Store the new and old number of rows
OldNrOfRows = UpdateTable.ListRows.Count - 1
NrOfRows = EndYear.Value - StartYear.Value + 1
' Resize the table
UpdateTable.Resize UpdateTable.Range.Resize(1 + NrOfRows)
'Delete cells below the table if it gets smaller
If OldNrOfRows > NrOfRows Then
UpdateTable.Range.Offset(NrOfRows + 1, 0).Resize(OldNrOfRows - NrOfRows + 1).Delete
End If
End If
Next i
End Sub
Я новичок в форуме и действительно не знаю, как предоставить пример данных. скажем, таблицы так же просты, как 2 столбца. Один столбец для лет, другой столбец для расчета чего-либо.
StartYear = 2011
EndYear = 2014
2010 (2011 -1 ) ----- 128 (64*2)
2011 (2012 -1 ) ----- 64 (32*2)
2012 (2013 -1 ) ----- 32 (16*2)
2013 (2014 -1 ) ----- 16 (8*2)
2014 ----- 8
Я ищу
- таблица, чтобы сжать / развернуть с нижней строкой (2014), всегда являющейся нижней строкой и для любой добавленной строки, идущей сверху
- формулы, которые будут скопированы в эти добавленные строки
дайте мне знать, если это имеет смысл.