날짜 자동 기재, 연습용 더미 데이터 생성
엑셀을 처음 켰을 때, 당신은 무엇을 가장 먼저 하는가?
아마, 반복적으로 하는 작업 중 하나가, 날짜 열을 생성하는 것이다.
대부분 시작일자를 치고, 드래그하여 만들텐데, 귀찮으니, 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
물론, 근본은 없는 코드이다.