source

Excel VBA:수식을 사용하여 여러 셀 자동 채우기

factcode 2023. 7. 18. 22:00
반응형

Excel VBA:수식을 사용하여 여러 셀 자동 채우기

저는 다른 파일에서 수집한 많은 양의 데이터를 가지고 있습니다.이 메인 워크북에서는 각 셀에 대해 다른 유형의 공식을 사용합니다.범위 A에서 F는 다른 파일의 데이터를 수집하는 곳입니다.H에서 AC 범위에서는 새 데이터가 입력될 때마다 수동으로 아래로 끌어서 자동으로 채우는 공식이 있습니다.아래 코드는 제가 사용한 코드이며 자동으로 채우려는 공식은 6개뿐입니다.

Application.ScreenUpdating = False

lastRow = Range("B" & Rows.Count).End(xlUp).Row
Range("D2").Formula = "=$L$1/$L$2"
Range("D2").AutoFill Destination:=Range("D2:D" & lastRow)

Range("E2").Formula = "=$B2/2116"
Range("E2").AutoFill Destination:=Range("E2:E" & lastRow)

Range("F2").Formula = "=$D$2+(3*SQRT(($D$2*(1-$D$2))/2116))"
Range("F2").AutoFill Destination:=Range("F2:F" & lastRow)

Range("G2").Formula = "=$D$2-(3*SQRT(($D$2*(1-$D$2))/2116))"
Range("G2").AutoFill Destination:=Range("G2:G" & lastRow)

Range("H2").Formula = "=IF($E2>=$F2,$E2,NA())"
Range("H2").AutoFill Destination:=Range("H2:H" & lastRow)

Range("I2").Formula = "=IF($E2<=$G2,$E2,NA())"
Range("I2").AutoFill Destination:=Range("I2:I" & lastRow)
ActiveSheet.AutoFilterMode = False

Application.ScreenUpdating = True

그러나 메인 워크북에는 약 15개의 공식이 있어 새로운 데이터가 입력될 때마다 자동으로 채워지기를 원합니다.저는 메인 워크북이 여러 개 있고, 공식이 일정하지 않습니다.모든 공식에 대해 위의 코드를 삽입하는 것은 힘든 일입니다.프로그램을 자동으로 끌어다 놓을 수 있는 방법이 있습니까?메인 워크북에는 공식이 이미 작성되어 있습니다.자동 채우기를 위해 여러 가지 코드를 시도해 보았지만, 지금까지 오류 없이 작동하는 코드는 위의 코드뿐입니다.이 버전 또는 이 버전과 유사한 버전을 사용하려고 했지만 작동하지 않습니다.

With wbList.Sheets("Attribute - 10 mil stop")
    lastRow = Worksheets(ActiveSheet.Name).Range("B2").Rows.Count
    'Worksheets(ActiveSheet.Name).Range(Selection, Selection.End(xlDown)).Select
    Worksheets(ActiveSheet.Name).Range("D2:I2").Select
    Selection.AutoFill Destination:=Range("D2:I" & Range("B2" & Rows.Count).End(xlDown).Row)
End With

제가 코드를 너무 많이 건드렸어요.나는 심지어 그게 그렇게 되어야 하는지도 모릅니다.도와주셔서 감사합니다!

당신이 찾고 있는 접근법은FillDown매번 머리를 찰 필요가 없는 또 다른 방법은 일련의 문자열에 공식을 저장하는 것입니다.이들을 결합하면 다수의 공식을 입력할 수 있는 강력한 방법이 제공됩니다.코드는 다음과 같습니다.

Sub FillDown()

    Dim strFormulas(1 To 3) As Variant

    With ThisWorkbook.Sheets("Sheet1")
        strFormulas(1) = "=SUM(A2:B2)"
        strFormulas(2) = "=PRODUCT(A2:B2)"
        strFormulas(3) = "=A2/B2"

        .Range("C2:E2").Formula = strFormulas
        .Range("C2:E11").FillDown
    End With

End Sub

스크린샷:

라인 기준 결과:.Range("C2:E2").Formula = strFormulas:

enter image description here

라인 기준 결과:.Range("C2:E11").FillDown:

enter image description here

물론 마지막 행을 변수로 저장하고 다음과 같은 방식으로 전환하여 동적으로 만들 수 있습니다..Range("C2:E" & LRow).FillDown당신이 한 것과 매우 유사합니다.

이것이 도움이 되길 바랍니다!

내 의견을 바탕으로 원하는 작업을 수행할 수 있는 한 가지 방법은 다음과 같습니다.

범위 내의 셀을 선택하고 +를 누릅니다.

그러면 다음과 같은 팝업이 나타납니다.

enter image description here

테이블 위치 텍스트가 올바른지 확인하고 확인을 클릭합니다.

enter image description here

이제 D에 열 머리글을 추가하면 마지막 행까지 자동으로 테이블에 추가됩니다.

enter image description here

이제 이 열에 공식을 입력하면 다음과 같습니다.

enter image description here

입력하면 마지막 행까지 수식이 자동으로 채워집니다.

enter image description here

이제 테이블 아래의 다음 행에 새 행을 추가하면 다음과 같습니다.

enter image description here

입력하면 표 너비로 크기가 조정되고 수식이 있는 모든 열도 추가됩니다.

enter image description here

이것이 당신의 문제를 해결하기를 바랍니다!

언급URL : https://stackoverflow.com/questions/22104743/excel-vba-autofill-multiple-cells-with-formulas

반응형