가끔 뽑기를 엑셀로 만들때가 있다.
워크시트 함수로 만들면, 랜덤함수는 셀계산을 매번하는데, VBA로 만들면, 이를 방지할 수 있다.
예를 들어, 몇 개의 숫자가 있고, 이를 임의로 가져오는 방법을 함수와 VBA로 만들어 봤다.
여러가지 방법이 있겠으나, 함수로 쓰면 대략 이런 모양이 되지 않을까?
="선택한 값은 "& TEXT(OFFSET(D5,0,RANDBETWEEN(0,10)),"#,###") &" 입니다."
이번에는 VBA로 RANDBEETWEEN 함수를 OFFSET과 함께 사용했다. 별 건 없다.
여기에 기준셀을 선택하는 인풋창을 넣어두면 더 사용하기 편할 수 있겠지만 귀찮아서 패스.
[코드샘플]
Sub choice_value()
Dim x As Integer
Dim y As Integer
Dim a As String
Dim b As String
Dim CL As Range
x = 0
Set CL = Range("D5")
y = CL.End(xlToRight).Column - CL.Column
a = "선택한 값은 "
b = " 입니다."
Range("d9").Value = a & Format(CL.Offset(x, WorksheetFunction.RandBetween(x, y)), "#,###") & b
End Sub