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
:
라인 기준 결과:.Range("C2:E11").FillDown
:
물론 마지막 행을 변수로 저장하고 다음과 같은 방식으로 전환하여 동적으로 만들 수 있습니다..Range("C2:E" & LRow).FillDown
당신이 한 것과 매우 유사합니다.
이것이 도움이 되길 바랍니다!
내 의견을 바탕으로 원하는 작업을 수행할 수 있는 한 가지 방법은 다음과 같습니다.
범위 내의 셀을 선택하고 +를 누릅니다.
그러면 다음과 같은 팝업이 나타납니다.
테이블 위치 텍스트가 올바른지 확인하고 확인을 클릭합니다.
이제 D에 열 머리글을 추가하면 마지막 행까지 자동으로 테이블에 추가됩니다.
이제 이 열에 공식을 입력하면 다음과 같습니다.
입력하면 마지막 행까지 수식이 자동으로 채워집니다.
이제 테이블 아래의 다음 행에 새 행을 추가하면 다음과 같습니다.
입력하면 표 너비로 크기가 조정되고 수식이 있는 모든 열도 추가됩니다.
이것이 당신의 문제를 해결하기를 바랍니다!
언급URL : https://stackoverflow.com/questions/22104743/excel-vba-autofill-multiple-cells-with-formulas
'source' 카테고리의 다른 글
문자열에 지정된 변수의 이름을 가져오는 방법은 무엇입니까? (0) | 2023.07.18 |
---|---|
MS SQL Server 대신 MongoDB를 사용하는 경우의 장단점 (0) | 2023.07.18 |
Python에서 문자열과 정수 연결 (0) | 2023.07.18 |
두 세그먼트가 교차하는지 확인하려면 어떻게 해야 합니까? (0) | 2023.07.18 |
Python에서 네임스페이스 패키지를 만들려면 어떻게 해야 합니까? (0) | 2023.07.18 |