감사조서 Leadsheet 자동화: 엑셀 매크로 사용, 배열 수식을 활용한 데이터 매칭 방법
Вставка
- Опубліковано 12 вер 2024
- 1. 매칭되는 모든 값 가져오는 배열수식
=IFERROR(INDEX('IFRS(2406)'!$B$8:$B$194, SMALL(IF('IFRS(2406)'!$A$8:$A$194='마스터&매크로'!$C$5, ROW('IFRS(2406)'!$A$8:$A$194)-MIN(ROW('IFRS(2406)'!$A$8:$A$194))+1),
ROWS($A$1:A1))), "")
2. 조서 만들기 매크로 구문
Sub SaveLeadSheetAndAuditProcedure()
Dim LeadSheet As Worksheet
Dim AuditProcedureSheet As Worksheet
Dim NewWorkbook As Workbook
Dim SaveAsName As String
Dim FolderPath As String
Dim FileName As String
Dim ProcedureSheetName As String
' 현재 매크로 파일 경로 가져오기
FolderPath = ThisWorkbook.Path & "\"
' 조서양식 시트 이름
Set LeadSheet = ThisWorkbook.Sheets("조서양식")
' 새 문서의 저장 파일명 및 조서양식 시트명 가져오기
SaveAsName = Trim(ThisWorkbook.Sheets("마스터&매크로").Range("F5").Value)
ProcedureSheetName = Trim(ThisWorkbook.Sheets("마스터&매크로").Range("C5").Value)
' 감사절차 시트 가져오기
On Error Resume Next
Set AuditProcedureSheet = ThisWorkbook.Sheets(ProcedureSheetName)
On Error GoTo 0
' 새로운 워크북 생성
Set NewWorkbook = Workbooks.Add
If Not AuditProcedureSheet Is Nothing Then
' 감사절차 시트가 있을 경우 복사 (첫 번째 위치에)
AuditProcedureSheet.Copy Before:=NewWorkbook.Sheets(1)
' 복사된 감사절차 시트의 수식을 값으로 변환
With NewWorkbook.Sheets(1)
.UsedRange.Value = .UsedRange.Value
End With
End If
' 조서양식 시트 복사 (두 번째 위치에)
LeadSheet.Copy After:=NewWorkbook.Sheets(NewWorkbook.Sheets.Count)
' 복사된 조서양식 시트 이름 변경 및 수식을 값으로 변환
With NewWorkbook.Sheets(NewWorkbook.Sheets.Count)
.Name = SaveAsName
.UsedRange.Value = .UsedRange.Value
End With
' 새로운 문서에서 기본 시트 삭제 (빈 시트 제거)
Application.DisplayAlerts = False
NewWorkbook.Sheets("Sheet1").Delete
Application.DisplayAlerts = True
' 저장할 경로 및 파일명 설정
FileName = FolderPath & SaveAsName & ".xlsx"
' 새로운 문서 저장 (링크 끊기)
NewWorkbook.SaveAs FileName:=FileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
NewWorkbook.Close SaveChanges:=False
MsgBox "새로운 문서가 저장되었습니다: " & FileName, vbInformation
End Sub