2017-05-20 3 views
-1

나는 Sheet2의 값을 column2에서 column4까지 가지고 있습니다. 나는 sheet-2의 각 열에있는 고유 한 데이터를 무작위로이 sheet3에 출력하고 싶습니다. 텍스트 문자열 사이에 임의의 값을 생성 할 수 있습니까?VBA의 무작위 값 생성

시트 2는 :

Column 2 Column 3 Column 4 
M   25   Agree 
F   48   Agree 
      50   DisAgree 

나는, Sheet3의이 같은 것을 데이터의 임의의 120 개 행을 생성합니다.

Column 2 Column3 Column4 
M   25  Agree 
F   48  DisAgree 
M   48  Agree 
M   50  DisAgree 
. 
. 
. 
. 
M  25  Agree 

내가 세 개의 열이, 분명히하려면 - 열 2, 3 열 시트 2에서

Column4

을 만 고유 한 값이 존재한다. 해당 열의 동일한 값은 표시되지 않습니다.

Sheet3에서 예를 들어 2 열만 섭취하면. M, F, F, M, F (무작위로 121 번째 행까지)와 같이 row2에서 121까지 임의로 값을 가져야합니다.

의견을 공유하십시오.

+0

약간 혼란 스럽습니다. 어떻게 Sheet2의 데이터가 Sheet3에 사용됩니까? 네가 보여준 sheet2의 테이블에'F/25/Disagree'가 보이지 않습니다. 임의의 값을 원하면 VBA가 필요합니까? 왜 싫어 (나이)'= RANDBETWEEN (25,50)'? – BruceWayne

+0

@ BruceWayne 죄송합니다. Sheet25에 F25이 없습니다. 미안해. – Sid29

+0

그러나 그것의 randbetween (25,50). 해당 열 내의 값 사이에 무작위로 있습니다. 그래서 실제로는 25와 50입니다. – Sid29

답변

1

OFFSETRANDBETWEEN 기능을 사용할 수 있습니다. 예컨대

: 0과 2 사이의 임의의 번호를 선택하고 그 값을 선택한다

=OFFSET(Sheet2!D$1,RANDBETWEEN(0,2),0) 

그 아래 시트 2 D1 많은 행!. 따라서 생성 된 난수가 2 인 경우 "동의하지 않음"이 반환됩니다.

RANDBETWEEN 함수의 두 번째 매개 변수를 사용 가능한 선택 항목 수보다 하나 작게 설정하면됩니다. 당신의 시트가 모두 1 행의 헤더가 가정


을 (당신은. 두 번째 매개 변수로 COUNTA(Sheet2!D:D)-1 같은 것을 사용하여 해당 일반화 수), 따라서 데이터가 행 2에서 시작, 당신은 Sheet3에 다음 수식을 사용할 수 있습니다 !의 B2 및 Sheet3의 B2의 전체 범위에 복사 : D121

=OFFSET(Sheet2!B$2,RANDBETWEEN(0,COUNTA(Sheet2!B:B)-2),0) 
1

이 데이터 세트 카운트 시트 2의 열을 검사 데이터로부터 촬영되는 행에 대한 난수를 발생시킨다. 데이터를 Sheet3에 붙여 넣습니다. for 루프를 수정하여 붙여 넣을 데이터 세트의 수와 범위를 수정할 수 있습니다.

Sub Random() 
Dim lr1, lr2, lr3 As Long 
Dim r1, r2, r3 As Integer 
Dim sht, sht2 As Worksheet 

Set sht = Worksheets("Sheet2") 
Set sht2 = Worksheets("Sheet3") 

lr1 = sht.Cells(Rows.Count, 1).End(xlUp).Row 
lr2 = sht.Cells(Rows.Count, 2).End(xlUp).Row 
lr3 = sht.Cells(Rows.Count, 3).End(xlUp).Row 

For i = 1 To 120 
r1 = CInt((lr1 - 1 + 1) * Rnd()) + 1 
r2 = CInt((lr2 - 1 + 1) * Rnd()) + 1 
r3 = CInt((lr3 - 1 + 1) * Rnd()) + 1 

sht2.Cells(i, 1).Value = sht.Cells(r1, 1).Value 
sht2.Cells(i, 2).Value = sht.Cells(r2, 2).Value 
sht2.Cells(i, 3).Value = sht.Cells(r3, 3).Value 

Next i 

End Sub