Code of AI

[ChatGPT] 랜덤수 VBA 코드

별별AI 2023. 9. 13. 21:34
728x90

sheet1 시트에서 cell(1,2)에 있는 숫자의 갯수만큼 겹치지 않는 랜덤 수를 A열에 나타내줘. 하나의 셀에 숫자가 하나씩 들어가도록 하고, 랜덤 수를 찾는 범위는 0부터 100까지 중에 자연수로 해줘. 위처럼 VBA로 코딩해줘.

 


아래는 VBA를 사용하여 Excel 시트에서 지정한 범위 내에서 겹치지 않는 랜덤 수를 생성하여 A열에 입력하는 코드 예시입니다. 코드를 실행하기 전에 먼저 시트 이름을 "Sheet1"로 확인하고, (1,2) 셀에 숫자가 있는지 확인해주세요.

 


Sub GenerateRandomNumbers()

 

Dim ws As Worksheet
Dim rng As Range
Dim numCount As Integer
Dim randNumber As Integer
Dim uniqueNumbers As New Collection
Dim cellValue As Variant
Dim i As Integer

' 시트와 셀 범위 설정
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set rng = ws.Cells(1, 2)

' 셀에 있는 숫자 갯수 확인
cellValue = rng.Value
If IsNumeric(cellValue) Then
numCount = CInt(cellValue)

Else
MsgBox "셀에 숫자가 없거나 숫자가 아닙니다. 확인 후 다시 실행해주세요."
Exit Sub
End If

' 랜덤 숫자 생성 및 A열에 입력
For i = 1 To numCount
Do
randNumber = Int((100 - 0 + 1) * Rnd + 0) ' 0부터 100 사이의 랜덤 숫자 생성
Loop While IsInCollection(uniqueNumbers, randNumber) ' 겹치지 않는지 확인
uniqueNumbers.Add randNumber ' 랜덤 숫자를 컬렉션에 추가
ws.Cells(i, 1).Value = randNumber ' A열에 랜덤 숫자 입력
Next i
End Sub

Function IsInCollection(col As Collection, val As Variant) As Boolean
On Error Resume Next
col.Add val, CStr(val) ' 값을 추가하고, 중복이면 오류 발생
IsInCollection = (Err.Number = 0) ' 오류가 없으면 중복이 아니므로 True 반환
Err.Clear
End Function

이제 VBA 에디터(Alt + F11)에서 원하는 시트의 모듈에 코드를 복사하여 실행시키면 됩니다. (주의: VBA 실행 전에 원본 데이터를 백업하는 것이 좋습니다.) 이 코드는 (1,2) 셀에 있는 숫자의 개수만큼 A열에 겹치지 않는 랜덤 수를 채워넣습니다. 숫자가 중복되지 않도록 처리되므로 원하는 결과를 얻을 수 있을 것입니다.


 

결과 확인



랜덤 수의 갯수는 제대로 출력하고 있으나, 겹치지 않는 수로 찾는 것은 오류 발생

728x90