본문 바로가기
엑셀 (Excel)

[Excel 매크로 강좌] Randomize + Rnd 를 활용하여 내부 반복되는 숫자에 대해서 알아보자

by ★√★ 2021. 2. 24.

안녕하세요, Davey입니다. 오늘 포스팅할 내용은 좀 간단하게, 반복되는 숫자를 밷어 내는 Randomize 그리고 Rnd 대해서 구현을 해보려고 합니다. 무작위 숫자를 출력하는 함수를 사용하는 것입니다.

 

Excel 매크로 Excel 엑셀 매크로 Randomize + Rnd 를 활용하여 내부 반복되는 숫자 썸네일

1. Randomize & Rnd 이란?

Randomize은 특정한 함수라기 보다는 내부적으로 명명하느 명령어라고 생각합니다. 정확한 정의를 인터넷에서 검색한 것은 아니고, 선언을 통해 내부 반복되는 무작위 숫자가 내부 반복이 아닌 그 안에서도 무작위로 숫자를 밷어내는 명령어라고 이해했습니다.

 

 

Rnd는 특정하게 변수 선언을 하지 않고도, 내부 반복되는 무작위 숫자들이 들어가는 변수라고 생각하시면 될 거 같습니다. 그래서 원하는 수식에 "Rnd" 집어 넣고 구현을 하면 결과값도 무작위 변수로 인해 다양하게 도출 되는 것을 확인 하실 수 있습니다. 

 

2. Randomize & Rnd 매크로 구현

: 그럼 1번 항목에서 제가 공부하는 사항을 검토 및 증명하기 위해 기본적으로 Rnd를 사용하는 매크로와 그 매크로에서 Randomize를 썼을 때와 안 썼을 때의 차이점을 구현하는 매크로를 짜보도록 하겠습니다. 

 

 1) Rnd를 이용한 간단한 수식 매크로 (코드 블럭에는 따로 매크로 항목은 없는 거 같습니다.)

 

Option Explicit  # 변수선언을 필수로 하게 강제하는 선언문

Sub test1()

Dim testNo As Integer

Dim checkedrange As Range

Set checkedrange = Range(Cells(Rows.Count, "A").End(xlUp), "A1")

testNo = Int((100 * 2) * Rnd * 2 + 1000)

Cells(Cells(Rows.Count, "A").End(xlUp).Offset(1).Row, "A") = testNo 

End Sub 

 

- 위 코드를 구현을 하면 아래와 같이 "A" Column에 무작위의 결과 값이 표현이 되는 걸 확인 하실 수 있습니다. 이 중에서 중복값 체크를 위해서 조건부 서식을 통해서 색깔 표시를 할 예정입니다.

 

 

Randomize + Rnd 구현 내용 사진

 

 

- [홈] - [조건부 서식] - [새 규칙] - [고육 또는 중복 값만 서식 지정] 을 통해서 지정을 하면 아래와 같이 중복되는 값이 나온 것을 확인 하실 수 있습니다. 즉, 랜덤하게 밷는 값에도 나름대로 내부 규칙이 있다는 것입니다.

 

Randomize + Rnd 구현 내용 사진

 

Randomize + Rnd 구현 내용 사진

 

Randomize + Rnd 구현 내용 사진

 

- 그럼 그 내부 규칙도 없이 정말 무작위로 밷을 수 있게 "Randomize"를 선언해보도록 하겠습니다. "Rnd" 변수 값 전에 선언을 해보도록 하겠습니다. (매크로 코드 블록이 없어서, 파이썬 코드 블록으로 사용했습니다.) 그리고 위에서 했든 중복 값 처리를 반복적으로 해보도록 하겠습니다.

 

Randomize # 내부 엑셀의 Random 값을 값은 값에서 도는게 아니고, 그런 규칙 없이 무작위로 뱉어내라고 하는 Setting

testNo = Int((100 * 2) * Rnd * 2 + 1000)

 

Randomize + Rnd 구현 내용 사진

 

 

 

- 위 중복 값 표시를 하는 행위를 반복해서 하면, 중복 값이 있다라는 Color Marking을 보실 수 있습니다. 즉, "Randomize"의 의미는 "Rnd"의 랜덤으로 밷는 규칙을 무시하고 랜덤한 숫자를 밷는 게 아니고, 또 다른 의미의 무작위 숫자를 밷게 하는 선언문이라고 생각합니다. 이 부분에 대해서는 좀 더 고민하고 공부를 해봐야 될 거 같습니다.

 

Randomize + Rnd 구현 내용 사진

 

 이상입니다. 오늘은 Randomize 선언문과 Rnd 기본 제공 변수에 대해서 공부한 것을 구현해보는 시간을 가졌습니다. 1번항목에 설명 드린 내용이 매크로 코드를 통해서, 약간은 상의 하다라는 걸 알게 되니까, 공부할 게 많이지는 느낌입니다. 혹, 이 포스팅을 보시고, 1번항목에 대해서 추가적으로 수정이나 보안해야 할 점이 있다면 꼭 댓글 남겨주세요. 

 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글