Microsoft Excel에서 VBA를 사용하여 한 장에 각 시트의 셀의 CurrentRegion 복사
_ 한 번에 여러 시트를 처리하고 각 시트의 데이터를 마스터 워크 시트로 복사하려면이 문서를 읽어야합니다. VBA 코드의 currentregion 속성을 사용하여 모든 워크 시트의 데이터를 단일 시트로 통합합니다. 이 속성은 AutoFormat 메서드와 같이 현재 영역 전체를 포함하도록 선택 영역을 자동으로 확장하는 많은 작업에 유용합니다. 이 속성은 보호 된 워크 시트에서 사용할 수 없습니다 ._
조건은 다음과 같습니다. 모든 시트에는 비슷한 형식, 즉 동일한 수의 열이 포함되어야합니다. 동일한 형식을 사용하여 데이터를 정확하게 병합 할 수 있습니다.
참고 :이 기사에서는 VBA 코드를 사용하는 방법을 보여줍니다. 어떤 이유로 시트 중 하나에서 열 수가 다른 경우 병합 된 전체 데이터가 정확한 그림을 제공하지 않습니다. 동일한 수의 열을 사용하는 것이 좋습니다. VBA 코드는 통합 문서에 새 시트를 추가 한 다음 덮어 쓰지 않고 각 시트 다음에 데이터를 복사하여 붙여 넣습니다.
1 월, 2 월, 3 월이라는 3 개의 시트를 예로 들어 보겠습니다. 다음은 이러한 시트의 스냅 샷입니다.
모든 시트의 데이터를 하나의 시트로 결합하려면 아래 단계에 따라 VB 편집기를 시작해야합니다.
개발자 탭을 클릭하십시오. 코드 그룹에서 Visual Basic을 선택하십시오
-
표준 모듈에 아래 코드 복사
Sub CopyCurrentRegion() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For Each sh In ThisWorkbook.Worksheets If sh.Name <> DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) sh.Range("A1").CurrentRegion.Copy DestSh.Cells(Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyCurrentRegionValues() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For Each sh In ThisWorkbook.Worksheets If sh.Name <> DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) With sh.Range("A1").CurrentRegion DestSh.Cells(Last + 1, 1).Resize(.Rows.Count, _ .Columns.Count).Value = .Value End With End If End If Next Application.ScreenUpdating = True End Sub Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function Function Lastcol(sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 End Function Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Resume Next If WB Is Nothing Then Set WB = ThisWorkbook SheetExists = CBool(Len(Sheets(SName).Name)) End Function
_ 블로그가 마음에 들면 Facebook에서 친구들과 공유하세요. Twitter와 Facebook에서도 팔로우 할 수 있습니다 ._
_ 우리는 여러분의 의견을 듣고 싶습니다. 우리가 작업을 개선, 보완 또는 혁신하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]_로 문의 해주세요