엑셀(EXCEL) – 일자가 기간내 포함된 것인지 확인하여 예약 상황 확인

이제 지금 지나가는 태풍이 끝나고 나면 가을걷이가 한창일 것입니다.
더운 여름 잠시 우리들은 일상을 떠나 휴가를 가서 지친 심신을 달래는데
휴가지의 민박집이나 펜션들은 손님 맞이에 정신이 없었을 것입니다.

휴가지에 숙박을 예약하려면 담당 직원들이 그 숙박지의 예약 상태를 알아야
적절히 룸을 운영하여 예약 잘못으로 인해 모처럼의 휴가를 망치지 않을 것입니다.
어떤 분이 홈페이지를 운영하기 전에 임시로 엑셀로 예약상황을 관리하시겠다고
질문을 올려주셨는데 그 해답?을 간단한 팁으로 올립니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3505287
(엑셀 날짜 작업 문의)

Option Explicit

Sub Count_Persons_In_Rooms()

Dim cnt As Integer
Dim Indate As Date
Dim RngCel As Range

Dim sht As Worksheet

‘ 검색된 자료를 출력할 위치를 구함
cnt = 1

‘ 검색된 자료를 출력할 시트를 생성, 있으면 경고없이 삭제
Application.DisplayAlerts = False

For Each sht In Worksheets
If sht.Name = “Persons_In_Rooms” Then
sht.Delete

End If
Next sht

‘ 검색된 자료를 출력하기 위한 시트 생성
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = “Persons_In_Rooms”

Set sht = Sheets(“Persons_In_Rooms”)

Sheets(“sheet1”).Select

‘ 같은 시트에 출력할 때 아래 코멘트를 지우고 사용하면 됨
‘ Range(“G2”, Range(“H2”).End(xlDown)).ClearContents

Indate = Cells(1, 6).Value

For Each RngCel In Range(“B2”, Range(“B65536”).End(xlUp))

If Indate >= RngCel.Value Then
‘ check out 날짜는 그날을 포함할지 안할지는 결정(<, <=)
If Indate <= RngCel.Offset(0, 1).Value Then

cnt = cnt + 1

‘ 새 시트에 자료 생성
sht.Range(“A1”).Value = “일자”
sht.Range(“B1”).Value = “호실”
sht.Range(“C1”).Value = “인원”

Range(“F1”).Copy sht.Range(“A” & cnt)
RngCel.Offset(0, 2).Copy sht.Range(“A” & cnt).Offset(0, 1)
RngCel.Offset(0, 3).Copy sht.Range(“A” & cnt).Offset(0, 2)

‘ 같은 시트에 자료 출력할 때는 위의 6줄에 코멘트를 지우고 아래 코드를 사용
‘ Range(“G” & cnt).Value = RngCel.Offset(0, 2).Value
‘ Range(“G” & cnt).Offset(0, 1).Value = RngCel.Offset(0, 3).Value

End If
End If

Next

Application.DisplayAlerts = True

Sheets(“Persons_In_Rooms”).Select

End Sub

그냥 간단하게 출력하는 루틴을 만들었는데 특정 영역을 지정하거나 동적이름을 정의해서
더 활용할 수 있음. 더 확장하면 특정일로 부터 체크아웃하는 날까지 일자별로 리스트를
만들어서 출력할 수도 있으나 간단한 팁으로 올리는 것이므로 응용해서 사용바랍니다.

첨부 화일 : 20150825-Persons_In_Rooms