Microsoft Excel에서 VBA를 사용하여 통합 문서의 워크 시트 정렬
이 기사에서는 워크 시트 이름에 따라 워크 북의 워크 시트를 오름차순 또는 내림차순으로 정렬하는 방법에 대해 자세히 설명했습니다.
첨부 된 통합 문서에는 두 개의 모듈이 있습니다.-Module1에는 “매크로”시트의 “제출”버튼에 할당 된 매크로 “SortWorksheets”가 포함되어 있습니다.
이 매크로는 “매크로”라는 이름의 기본 시트 인 첫 번째 워크 시트를 제외한 모든 워크 시트를 정렬합니다.
사용자가 “제출”버튼을 클릭하면 “매크로”시트 뒤의 모든 시트가 콤보 상자에서 사용자가 선택한 오름차순 또는 내림차순으로 정렬됩니다.
Module2에는 “AscendingSortOfWorksheets”및 “DecendingSortOfWorksheets”두 개의 매크로가 있습니다. “AscendingSortOfWorksheets”매크로를 실행하면 통합 문서에있는 모든 워크 시트가 오름차순으로 정렬됩니다. “DecendingSortOfWorksheets”매크로를 실행하면 통합 문서에있는 모든 워크 시트가 내림차순으로 정렬됩니다.
논리 설명
버블 정렬 알고리즘은 통합 문서에서 워크 시트를 정렬하는 데 사용됩니다.
버블 정렬 알고리즘은 배열의 각 항목을 배열의 다른 항목과 비교하고 오름차순 또는 내림차순으로 정렬할지 여부에 따라 서로 바꿉니다. 각 단계에서 가장 작은 값 또는 가장 큰 값이 배열 맨 위에 표시됩니다. 모든 항목이 정렬 될 때까지 알고리즘이 반복됩니다.
이 기사에서 우리의 목표는 통합 문서의 워크 시트를 이름별로 정렬하는 것입니다. 우리가 사용하는 통합 문서는 재무 대시 보드, 인사 관리 및 영업 대시 보드와 같은 이름을 가진 서로 다른 워크 시트로 구성됩니다.
이 목표를 달성하기 위해 우리는 워크 시트를 정렬하는 데 버블 정렬 알고리즘을 사용했습니다.
코드 설명
SortWorksheets 매크로
이 매크로는 사용자가 제출 버튼을 클릭 할 때 실행됩니다. 이 매크로는 통합 문서의 첫 번째 워크 시트를 제외하고 통합 문서의 모든 워크 시트를 이름별로 정렬합니다. 콤보 상자에서 사용자가 선택한 값에 따라 워크 시트를 오름차순 또는 내림차순으로 정렬합니다.
콤보 상자를 추가하려면 다음 단계를 따르십시오. 개발자 탭으로 이동> 삽입 클릭> 양식 컨트롤 아래 콤보 상자 아이콘 클릭
-
콤보 상자를 마우스 오른쪽 단추로 클릭하고 형식 제어를 클릭하십시오.
-
컨트롤 탭으로 이동하여 항목을 할당하고 콤보 상자를 XFC1 셀과 연결합니다.
ComboBoxValue = Range ( “XFC1”). Value “매크로”워크 시트의 콤보 상자는 XFC1 셀과 연결됩니다. 따라서 XFC1 셀에서 값을 가져 오기 위해 ComboBoxValue 변수가 사용됩니다.
For i = 2 To SCount – 1 FOR 루프는 변수 i로 시작하고, 통합 문서의 첫 번째 워크 시트를 정렬에서 제외시키려는 값은 2부터 시작합니다.
ComboBoxValue = 1이면 오름차순 또는 내림차순으로 정렬할지 여부를 확인하기 위해 IF 조건을 사용합니다. ComboBoxValue 값이 1이면 오름차순으로 정렬하고 그렇지 않으면 내림차순으로 정렬합니다.
오름차순으로 정렬 된 워크 시트
내림차순으로 정렬 된 워크 시트
AscendingSortOfWorksheets 및 DecendingSortOfWorksheets
AscendingSortOfWorksheets 및 DecendingSortOfWorksheets 매크로는 Alt + F8 바로 가기 키를 누르거나 개발자 탭으로 이동> 매크로 클릭> 매크로 선택 및 실행을 클릭하여 실행할 수 있습니다. 통합 문서에있는 모든 워크 시트를 정렬합니다. 이러한 매크로는 다른 통합 문서에서도 실행할 수 있습니다.
AscendingSortOfWorksheets 매크로 실행 후 정렬 된 워크 시트
오름차순으로 정렬 된 워크 시트 DecendingSortOfWorksheets 매크로
아래 코드를 따르세요
Sub AscendingSortOfWorksheets() 'Sort worksheets in a workbook in ascending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Sub DecendingSortOfWorksheets() 'Sort worksheets in a workbook in descending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name > Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.
여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요