감사조서 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

КОМЕНТАРІ •