3 차원 조옮김 (Microsoft Excel)
이전 직장에서 전직 Lotus 1-2-3 사용자였던 Patti는 Excel에서 매우 부족한 기능, 즉 데이터를 3 차원으로 전치하는 기능을 매우 많이 사용했습니다. 2 차원 전치가 Excel에서 지원되지만 Patti는 행이나 열 또는 표를 가져 와서 워크 시트 스택에 분산시키는 방법을 찾지 못했습니다. 이것은 그녀의 재무 사무실의 모든 사람들이 매일 사용하는 기능이었고 그녀는 정말 그것을 놓쳤습니다.
패티가 옳습니다. Excel에서이 작업을 수행하는 기본 제공 기능이 없습니다. 가장 가까운 옵션은 피벗 테이블과 여기에 포함 된 “페이지 표시”기능을 사용하는 것입니다. 일반적으로 다음 단계를 따릅니다.
-
평소처럼 데이터에서 피벗 테이블을 만듭니다.
-
워크 시트를 만들려는 열을 피벗 테이블의 “보고서 필터”섹션에 배치합니다.
-
리본의 옵션 탭을 표시합니다. (이 탭은 피벗 테이블에서 작업하는 경우에만 표시됩니다.)
-
리본 왼쪽 끝에있는 피벗 테이블 그룹에서 옵션 도구 옆에있는 아래쪽 화살표를 클릭합니다.
-
보고서 필터 페이지 표시를 선택합니다. Excel에서 페이지를 표시 할 것인지 확인합니다.
-
6 확인을 누르십시오.
최종 결과는 2 단계에서 지정한 열의 각 항목에 대해 하나씩 일련의 워크 시트입니다. 이러한 워크 시트에는 각각 피벗 테이블의 “페이지”가 포함되어 있습니다.
그래도 원하는 작업을 수행하지 못하는 경우 매크로를 사용하여 데이터를 전치해야합니다. 이러한 매크로는 매우 복잡해질 수 있지만 기본적으로 필요한 것은 데이터 테이블을 단계별로 살펴보고 데이터의 각 행 (또는 열)을 자체 워크 시트로 이동하는 것입니다.
예를 들어, 다음 매크로 (Transpose3D)는 선택한 셀 범위에서 각 행을 가져 와서 새로 만든 고유 한 워크 시트에 해당 행을 배치합니다.
Sub Transpose3D() Dim rngTbl As Range Dim wsName As String Dim R As Integer Dim C As Integer Dim i As Integer Dim j As Integer Dim Killit As Integer Dim RCount As Integer Dim CCount As Integer Dim Table1() As Variant Dim Row1() As Variant RCount = Selection.Rows.Count CCount = Selection.Columns.Count If RCount < 2 Then MsgBox ("Error; Select a range with more than one row.") GoTo EndItAll End If wsName = ActiveSheet.Name R = ActiveCell.Row C = ActiveCell.Column Set rngTbl = Selection ReDim Table1(1 To RCount, 1 To CCount) ReDim Row1(1 To 1, 1 To CCount) Table1() = rngTbl.Value On Error GoTo Abend For i = 1 To RCount If SheetExists(wsName & "_Row_" & i) Then Killit = MsgBox("Sheet " & wsName & "_Row_" & i & _ " Already Exists!" & vbCrLf & _ " Cancel: Stop Transposition" & vbCrLf & _ " OK: Delete Sheet and Continue", vbOKCancel) If Killit = vbCancel Then GoTo EndItAll Application.DisplayAlerts = False Sheets(wsName & "_Row_" & i).Delete Application.DisplayAlerts = True End If Sheets.Add ActiveSheet.Name = wsName & "_Row_" & i Cells(R, C).Select For j = 1 To CCount Row1(1, j) = Table1(i, j) Next j Range(ActiveCell, ActiveCell.Offset(0, CCount - 1)) = Row1() Sheets(wsName).Select Next i GoTo EndItAll Abend: MsgBox ("Error in Routine Transpose3D.") EndItAll: Application.DisplayAlerts = True End Sub
Function SheetExists(SheetName As String) As Boolean Dim ws As Worksheet SheetExists = False For Each ws In ThisWorkbook.Worksheets If ws.Name = SheetName Then SheetExists = True Exit For End If Next ws End Function
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (11246)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.
link : / excel-Three-Dimensional_Transpositions [Three-Dimensional Transpositions]
.