![여러 스프레드시트의 값을 합산(VBA)](https://rvso.com/image/1414693/%EC%97%AC%EB%9F%AC%20%EC%8A%A4%ED%94%84%EB%A0%88%EB%93%9C%EC%8B%9C%ED%8A%B8%EC%9D%98%20%EA%B0%92%EC%9D%84%20%ED%95%A9%EC%82%B0(VBA).png)
내 Excel 통합 문서에는 세 개의 개별 스프레드시트가 있습니다. 스프레드시트는 형식이 동일하며 다양한 범주(승용차, 트럭 등)에 대한 개수 값을 나타냅니다. 다음 방법으로 스프레드시트를 결합하고 결합된 데이터(CombinedCount.xlsx)로 새 통합 문서를 만들어야 합니다.
='승객'!B3+'대형 트럭'!B3+'경트럭'!B3
함께 추가해야 할 셀이 많고, 이 코드는 완전히 동일한 형식의 수많은 통합 문서에 적용됩니다. 일부 Python 코드를 사용하여 이 프로세스를 자동화할 수 있는 방법이 있습니까?
답변1
Python으로 이 작업을 수행하려는 특별한 이유가 있습니까? Excel에서는 다음 VBA 매크로를 사용하여 대부분의 작업을 자체적으로 수행할 수 있습니다.
Sub CombineSheets()
'
' Add three identically-formatted sheets,
' putting the result into a fourth one, and then moving it to a new workbook.
'
Sheets(1).Copy After:=Sheets(3)
Sheets(4).Name = "Combined Counts"
Sheets(2).Select
Cells.Copy
Sheets(4).Select
Range("A1").Select
Selection.PasteSpecial Operation:=xlAdd
Sheets(3).Select
Cells.Copy
Sheets(4).Select
Selection.PasteSpecial Operation:=xlAdd
Sheets(4).Move
End Sub
이것
- 첫 번째 시트의 전체 복사본을 만들어 세 번째 시트 뒤에 배치합니다. 새 시트는 이후에 로 참조될 수 있습니다
Sheets(4)
. 첫 번째 시트가 호출되면Passenger
새 시트가 처음에 호출됩니다Passenger (2)
. - 새 시트의 이름을 바꿉니다
Combined Counts
. - 두 번째 시트를 모두 복사하고 추가 기능을 사용하여 새 시트에 붙여넣습니다. ("붙여넣기" → "선택하여 붙여넣기..."를 선택한 후 "작업" 섹션에서 "추가"를 선택하여 대화식으로 액세스할 수 있는 기능입니다.) 그런 다음 세 번째 시트에서 반복합니다. 두 번째 및 세 번째 시트의 숫자가 아닌 데이터(예: 텍스트)는 무시됩니다. 첫 번째 시트의 특정 셀에 텍스트가 있으면 다른 시트 중 하나에 숫자가 있어도 해당 텍스트는 결과에 유지됩니다. (그러나 시트의 형식이 동일하다고 말씀하셨기 때문에 이는 문제가 되지 않습니다.)
- 새 워크시트를 책에서 분리하여 새 통합 문서를 만듭니다.
그런 다음 다음과 같은 내용을 입력하여 새 통합 문서를 저장하고 창을 닫을 수 있습니다.
Do
fName = Application.GetSaveAsFilename( _
FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
Loop Until fName <> False
ActiveWorkbook.SaveAs Filename:=fName
ActiveWindow.Close
. End Sub
또는 다른 방법으로 파일 이름을 얻을 수도 있습니다.
답변2
이 작업에는 파워 쿼리 추가 기능을 사용하겠습니다. 폴더에서 모든 파일 또는 선택한 파일을 가져오고 각 파일의 데이터를 결합하는 테이블을 작성할 수 있습니다(표시한 대로 표준 레이아웃이 있다고 가정). 예를 들어:
http://www.excelguru.ca/blog/2013/11/26/from-txt-files-to-bi-solution/
파워 쿼리에는 데이터를 요약하고 집계할 수 있는 Group By 함수도 있습니다(예: 개수, 고유 개수, 합계, 평균 등).