_ 한 번에 여러 시트를 처리하고 각 시트의 데이터를 마스터 워크 시트로 복사하려면이 문서를 읽어야합니다. VBA 코드의 currentregion 속성을 사용하여 모든 워크 시트의 데이터를 단일 시트로 통합합니다. 이 속성은 AutoFormat 메서드와 같이 현재 영역 전체를 포함하도록 선택 영역을 자동으로 확장하는 많은 작업에 유용합니다. 이 속성은 보호 된 워크 시트에서 사용할 수 없습니다 ._

조건은 다음과 같습니다. 모든 시트에는 비슷한 형식, 즉 동일한 수의 열이 포함되어야합니다. 동일한 형식을 사용하여 데이터를 정확하게 병합 할 수 있습니다.

참고 :이 기사에서는 VBA 코드를 사용하는 방법을 보여줍니다. 어떤 이유로 시트 중 하나에서 열 수가 다른 경우 병합 된 전체 데이터가 정확한 그림을 제공하지 않습니다. 동일한 수의 열을 사용하는 것이 좋습니다. VBA 코드는 통합 문서에 새 시트를 추가 한 다음 덮어 쓰지 않고 각 시트 다음에 데이터를 복사하여 붙여 넣습니다.

1 월, 2 월, 3 월이라는 3 개의 시트를 예로 들어 보겠습니다. 다음은 이러한 시트의 스냅 샷입니다.

img1

img2

img3

모든 시트의 데이터를 하나의 시트로 결합하려면 아래 단계에 따라 VB 편집기를 시작해야합니다.

개발자 탭을 클릭하십시오. 코드 그룹에서 Visual Basic을 선택하십시오

img4

  • 표준 모듈에 아래 코드 복사

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]_로 문의 해주세요