WeekdayLife/excel

[엑셀VBA] 날짜 자동 기재, 연습용 더미 데이터 생성

2021. 7. 20.




날짜 자동 기재, 연습용 더미 데이터 생성

 

엑셀을 처음 켰을 때, 당신은 무엇을 가장 먼저 하는가?

 

 

 

아마, 반복적으로 하는 작업 중 하나가, 날짜 열을 생성하는 것이다. 

대부분 시작일자를 치고, 드래그하여 만들텐데, 귀찮으니, VBA로 만들어 보자.

 

방법은 여러가지가 있겠지만,

내가 하고 싶은건

- 시작일자와 종료일자를 입력하면,

- 아래쪽으로 자동입력 되는 형태이다.

 

요런식으로....

 

 

 

날짜가 입력되었으면, 우측에 연습용 데이터를 넣어본다.

내가 할 방식은 작은 수와 큰 수를 넣으면, 랜덤방식으로 정수를 넣는 것이다.

 

아래와 같이 더미데이터가 랜덤으로 생성된다.

 

 

 

과정을 GIF로 보자

 

 

 

코드는 아래와 같다.

취향과 용도에 따라서, 바꿔서 사용하면 되겠다.

 

Sub inputRandomValue()

Dim a As Integer
Dim b As Integer
Dim c As Date

myMenu = Application.InputBox("순차날짜 = 1 / 랜덤정수 = 2")

If myMenu = 2 Then

    Set myrng = Application.InputBox("영역을선택하세요", , , , , , , 8)

    a = Application.InputBox("시작숫자를 정수로 입력하세요")
    b = Application.InputBox("마지막숫자를 정수로 입력하세요")

    If a < b Then
        For x = 1 To myrng.Count
            myrng(x) = Application.WorksheetFunction.RandBetween(a, b)
        Next x
        GoTo dd:
    Else
       MsgBox ("시작숫자가 마지막숫자보다 큼")
    End If
   
   

ElseIf myMenu = 1 Then
   
    On Error GoTo ee:
    c = Application.InputBox("시작일자를 날짜로 입력하세요, YYYY-MM-DD")
    d = Application.InputBox("종료일자를 날짜로 입력하세요, YYYY-MM-DD")
   
   
    If c < d Then
        diff = DateDiff("d", c, d)
        rowNow = ActiveCell.Row
        colNow = ActiveCell.Column
   
        For y = 0 To diff
             Cells(rowNow + y, colNow) = DateAdd("d", y, c)
        Next y
       
        Columns(colNow).AutoFit
   
    Else
       MsgBox ("종료일자가 시작일자보다 큼")
   
    End If
   
    GoTo dd:

Else
GoTo ee:

End If

ee:
MsgBox "똑바로 입력하세요"


dd:

MsgBox "입력완료"

End Sub

 

 

 

 

물론, 근본은 없는 코드이다.