VBA를 사용하여 엑셀 시트에 트랜스 열
시나리오
Excel 통합 문서가 있다고 가정합니다. 3 장입니다. 시트에는 5 개의 열이 있습니다. 각 열에는 다른 도시의 데이터가 있습니다. 각 시트에는 동일한 도시의 서로 다른 데이터가있는 유사한 5 개의 열이 있습니다.
도전 :
고유 한 각 열에 대해 서로 다른 시트를 포함하는 파일을 만들어야합니다. 각 시트에는 해당 열의 데이터가 포함되어야합니다. 결국, 우리는 각각 3 개의 열이있는 5 개의 시트를 갖게 될 것입니다. 어떤 의미에서 열을 시트로 바꾸는 것입니다.
논리 :
먼저 각 열에 대해 서로 다른 시트가 포함 된 통합 문서를 만들어야합니다. 원본 파일의 첫 번째 시트 제목을 보면이를 수행 할 수 있습니다.
다음으로 원본 시트의 각 시트를 반복하여 각 열을 새 통합 문서의 해당 시트에 복사해야합니다.
열을 시트로 전치하는 VBA 코드.
시트를 먼저 바꾸는 VBA 코드를 살펴 보겠습니다. 아래에 설명합니다.
Sub TransposeColsToSheets() 'varibles Dim wb As Workbook Dim twb As Workbook Dim lstRw As Integer Dim lstCl As Integer Dim cols As Range With Application .DisplayAlerts = False .ScreenUpdating = False End With 'creating new file Set wb = Workbooks.Add 'saving the file. Replace the path with your destination. wb.SaveAs "C:\Users\Manish Singh\Desktop\Excel Tip\result.xlsx" Set twb = ThisWorkbook twb.Sheets(1).Activate lstCl = Cells(1, Columns.Count).End(xlToLeft).Column 'identfying headers for city names Set cols = Range(Cells(1, 1), Cells(1, lstCl)) 'loop to create sheets For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next 'loop to transpose columns to sheets For Each sh In twb.Sheets For x = 1 To cols.Count sh.Activate lstRw = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, x), Cells(lstRw, x)).Copy wb.Sheets("page" & x).Activate lstCl = Cells(1, Columns.Count).End(xlToLeft).Column + 1 Range(Cells(1, lstCl), Cells(1, lstCl)).PasteSpecial xlPasteAll Next x Next sh 'saving and closing the result workbook wb.Save wb.Close With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub
belove 파일을 다운로드하여 즉시 사용하거나 코드를 복사하여 필요에 따라 사용자 지정할 수 있습니다.
코드를 실행하면 즉시 5 개의 시트가있는 Excel 파일이 생성되며 각 시트에는 동일한 도시 데이터의 3 개 열이 포함됩니다.
`link : /wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [
Transpose Column To Sheets]
어떻게 작동합니까?
위의 예제 코드에서는 파일이 각 시트의 첫 번째 셀에서 시작하고 각 시트에 동일한 수의 열이 포함되어 있다고 가정했습니다.
나는 코드의 처음 몇 줄이며, 우리는 프로 시저에 필요한 변수를 선언했습니다. cols라는 변수에 열 헤더를 저장했으며 result.xlsx *라는 .xlsx 파일도 생성했습니다.
다음으로 루프를 사용하여 result.xlsx에 헤더 인콜과 동일한 수의 시트를 생성했습니다.
'loop to create sheets For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next
다음으로 중첩 루프를 사용했습니다. 첫 번째 루프는 원본 파일의 시트를 반복하는 것입니다. 각 열을 복사하여 results.xlsx 파일의 각 시트에 붙여 넣는 다음 루프입니다.
결국 통합 문서 result.xlsx를 저장하고 닫습니다. 그리고 끝났습니다.
그래서 예 여러분, 이것은 VBA를 사용하여 Excel에서 각 열을 새 시트에 복사하는 방법입니다. 이것은 우리 userMahmoodin이 댓글 섹션에 요청했습니다.
우리 모두가 사용할 수 있도록 기사가 될만한 가치가 있다고 생각했습니다. 여기 있습니다. 충분히 설명이 되었기를 바랍니다. 여전히 의심 스럽거나 다른 질문이 있으면 아래 의견 섹션에 질문하십시오.
관련 기사 :
작업 파일을 다운로드하십시오.
link : / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 경고 메시지 끄기]
| 실행중인 VBA 코드를 중단하는 경고 메시지를 끄려면 Application 클래스를 사용합니다.
link : / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel 2016에서 VBA를 사용하여 새 통합 문서 추가 및 저장]
| VBA를 사용하여 통합 문서를 추가하고 저장하려면 Workbooks 클래스를 사용합니다. Workbooks.Add는 새 통합 문서를 쉽게 추가하지만 …
인기 기사 :
link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 개의 Excel 단축키로 생산성 향상]
| 작업 속도를 높이십시오. 이 50 개의 바로 가기를 사용하면 Excel에서 더 빠르게 작업 할 수 있습니다.
link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]
| 이것은 다른 범위와 시트에서 값을 조회하는 데 사용되는 Excel의 가장 많이 사용되고 인기있는 기능 중 하나입니다. link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]
| 이 놀라운 기능을 사용하여 조건으로 값을 계산합니다.
특정 값을 계산하기 위해 데이터를 필터링 할 필요가 없습니다. Countif 기능은 대시 보드를 준비하는 데 필수적입니다.
link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]
| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.