입력 한 연도 수에 대한 수식이있는 행을 자동으로 추가하는 Excel 워크 시트)을 채우고 싶습니다.

모델을 만들려고합니다. 다루고 싶은 연도 범위를 입력 할 수있는 입력 페이지를 갖고 싶습니다. 입력 된 년 수에 따라 기존 수식으로 테이블 (다른 워크 시트)을 채우고 싶습니다.

좀 더 구체적으로 말하면, 2005-2014 년에 이르기까지 매년 행이있는 수식으로 가득 찬 테이블이 있습니다.
내 요청은 다음과 같습니다.

몇 년이 걸리고 입력 범위를 기반으로 테이블을 변경하고 행을 추가 / 빼는 입력 페이지를 만드는 방법이 있습니까? 예를 들어 입력 페이지의 범위를 2005-2018로 변경하면 표에 방정식으로 4 행이 더 추가됩니다.



답변

해결 방법이
를 자동화하려면 시작 및 종료 연도를 업데이트 한 후 테이블 크기를 조정하는 일부 VBA 코드를 사용하십시오.

코드
다음은 “Sheet1″(셀 B1 및 B2)과 “Sheet2″의 테이블을 사용한 구현입니다. 당신이 참고 해야한다 코드가 해당 용지에 뭔가를 변경할 때마다 실행하기 때문에, 세월에있는 시트에이 코드를 추가합니다. 제 경우에는이 코드가 “Sheet1″에 추가됩니다.

Private Sub Worksheet_change(ByVal Target As Range)
    Dim StartYear, EndYour As Range
    Dim UpdateTable As ListObject
    Dim NrOfRows, OldNrOfRows As Integer

    ' Set some ranges
    Set StartYear = Worksheets("Sheet1").Cells(1, 2)
    Set EndYear = Worksheets("Sheet1").Cells(2, 2)
    Set UpdateTable = Worksheets("Sheet2").ListObjects("Table1")

    ' 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
End Sub

코드에 대한 설명의 일부 포인트 코드를 설명
하기 위해 Microsoft 함수 / 방법 / 속성에 대한 일부 참조 :