Saturday, October 07, 2006
엑셀/Excel] VBA의 Rnd 함수로, 1에서 100까지의 랜덤 숫자 만들기
VBA를 비롯한 베이직 계열의 언어에서는 Rnd 함수로 랜덤 숫자 즉 난수를 발생시킵니다. 엑셀 함수인 RAND() 와는 전혀 다른 별개의 함수입니다.
엑셀의 RAND() 함수와는 달리, 비베의 Rnd 함수는 반드시 Randomize 라는 구문을 사용해야 합니다. 그렇지 않으면 무작위의 숫자가 나오지 않고 항상 같은 수(0.705547512 또는 0.705547511577606)가 나옵니다. Randomize 는 Rnd 앞에서 딱 1번만 사용해야 하고 루프 속에 넣으면 안됩니다.
문서를 열 때마다 값이 달라지는 엑셀의 RAND()와는 달리, VBA의 Rnd 함수는 결과값이 셀에 고정되어 있습니다. 왜냐하면 셀에 랜덤 함수가 직접 들어가는 것이 아니라, 값만 들어가기 때문입니다. 물론 VBA 를 다시 실행하면 값이 갱신됩니다.
실행시키면 A1 ~ J30 범위의 셀들이, 1에서 100까지의 무작위의 정수로 채워집니다.
Rnd 함수는, 0~1까지의 실수를 반환하기에, 1에서 100까지의 결과를 얻으려면
Int(Rnd * 100) + 1
이렇게 해야 합니다.
▶▶ 엑셀VBA] 지정한 범위의 셀, 한꺼번에 자동으로 채우기: Excel Range
위의 게시물에는, Rnd 함수가 아닌, 엑셀의 RAND() 함수를 수식으로서 셀에 넣어 랜덤 정수를 만드는 VBA예제가 있습니다. 거의 같은 결과입니다.
참고: ▶▶ 엑셀] VBA에서 RAND() 함수 에러: Sub 또는 Function이 정의되지 않았습니다
▶▶ 엑셀/Excel] 랜덤 함수 RAND() 사용법, 정수 난수 출력 - Random Integer
▶▶ 엑셀VBA매크로.예제: 셀 테두리에 색상 지정, 행운의 시트 만들기, Excel Sheet of Fortune
엑셀의 RAND() 함수와는 달리, 비베의 Rnd 함수는 반드시 Randomize 라는 구문을 사용해야 합니다. 그렇지 않으면 무작위의 숫자가 나오지 않고 항상 같은 수(0.705547512 또는 0.705547511577606)가 나옵니다. Randomize 는 Rnd 앞에서 딱 1번만 사용해야 하고 루프 속에 넣으면 안됩니다.
문서를 열 때마다 값이 달라지는 엑셀의 RAND()와는 달리, VBA의 Rnd 함수는 결과값이 셀에 고정되어 있습니다. 왜냐하면 셀에 랜덤 함수가 직접 들어가는 것이 아니라, 값만 들어가기 때문입니다. 물론 VBA 를 다시 실행하면 값이 갱신됩니다.
비베의 Rnd 함수로, 랜덤 숫자 만들기 예제
Sub 랜덤숫자만들기()
Randomize
Dim R, C
For R = 1 To 30
For C = 1 To 10
Cells(R, C).Value = Int(Rnd * 100) + 1
Next C
Next R
End Sub
Randomize
Dim R, C
For R = 1 To 30
For C = 1 To 10
Cells(R, C).Value = Int(Rnd * 100) + 1
Next C
Next R
End Sub
실행시키면 A1 ~ J30 범위의 셀들이, 1에서 100까지의 무작위의 정수로 채워집니다.
Rnd 함수는, 0~1까지의 실수를 반환하기에, 1에서 100까지의 결과를 얻으려면
Int(Rnd * 100) + 1
이렇게 해야 합니다.
▶▶ 엑셀VBA] 지정한 범위의 셀, 한꺼번에 자동으로 채우기: Excel Range
위의 게시물에는, Rnd 함수가 아닌, 엑셀의 RAND() 함수를 수식으로서 셀에 넣어 랜덤 정수를 만드는 VBA예제가 있습니다. 거의 같은 결과입니다.
참고: ▶▶ 엑셀] VBA에서 RAND() 함수 에러: Sub 또는 Function이 정의되지 않았습니다
▶▶ 엑셀/Excel] 랜덤 함수 RAND() 사용법, 정수 난수 출력 - Random Integer
▶▶ 엑셀VBA매크로.예제: 셀 테두리에 색상 지정, 행운의 시트 만들기, Excel Sheet of Fortune
tag: office
엑셀 Excel | 워드 Word | VBA 매크로 | 오피스
<< Home