MS Excel: 문자열 열을 문자열 그리드로 무작위화

MS Excel: 문자열 열을 문자열 그리드로 무작위화

단일 열에 100개의 이름이 포함된 MS Excel 시트가 있습니다.

다른 시트에는 열의 이름을 무작위로 할당하려는 10 x 10 셀 격자가 있습니다.

이를 달성하는 상대적으로 쉬운 방법이 있습니까, 아니면 VBA 유형 작업이 포함됩니까?

답변1

1부터 100까지 임의의 주문 번호를 생성하는 도우미 열을 사용하여 수행할 수 있습니다. A2:A101에 이름을 입력하세요. B2에는 다음을 입력합니다.

=AGGREGATE(15,7,ROW($1:$100)/(COUNTIFS($B$1:B1,ROW($1:$100))=0),RANDBETWEEN(1,100-COUNT($B$1:B1)))

그리고 복사하세요.

그러면 AGGREGATE에서 k가 포함된 1에서 100 사이의 숫자가 무작위로 선택됩니다 RANDBETWEEN(1,100-COUNT($B$1:B1)). 중복 COUNTIFS($B$1:B1,ROW($1:$100))=0이 발생하지 않도록 합니다.

여기에 이미지 설명을 입력하세요

그런 다음 INDEX/MATCH를 사용하여 값을 찾습니다. 이것을 그리드의 오른쪽 상단에 넣으세요:

=INDEX($A:$A,MATCH((ROW($A1)-1)*10+COLUMN(A$1),$B:$B,0))

계속해서 약물을 사용하는 것처럼 첫 번째 행에서 1-10을 찾고 두 번째 행에서 11-20을 찾습니다. 그리고 조회 열은 무작위이므로 무작위가 됩니다.

그런 다음 10 위에 복사하고 10 아래로 복사하십시오.

여기에 이미지 설명을 입력하세요


Office 365 Excel이 있는 경우 INDEX/MATCH는 10x10을 자동으로 유출하는 이 동적 버전으로 대체될 수 있습니다.

=INDEX(A:A,MATCH(SEQUENCE(10,10),B:B,0))

답변2

이름이 A 열에 저장되어 있다고 가정합니다.

  1. B 열에서 수식을 적용하십시오.=RAND()
  2. 결과 값을 복사하여 B열에 붙여넣고 수식을 덮어씁니다.
  3. C열에 수식을 적용합니다 =RANK(B2, $B$2:$B$101). 이렇게 하면 각 이름에 1~100까지의 숫자를 할당할 수 있습니다.
  4. 10x10 그리드 위에 1~10의 숫자를 추가하세요. 10x10 그리드의 왼쪽에서도 동일한 작업을 수행합니다. 이는 행 및 열 헤더 역할을 합니다.

이제 행 머리글이 있고 E2:E11열 머리글이 있다고 가정합니다 F1:O1.

  1. =INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0))셀 F2에 수식을 입력 하고 10x10 격자를 가로질러 드래그합니다.

솔루션 예시

답변3

이 배열 수식을 시도하고 다음으로 끝납니다.Shift+ Ctrl + Enter:

=INDEX($A$1:$A$10,RANDBETWEEN(1,COUNTA($A$1:$A$10)))

여기에 이미지 설명을 입력하세요

관련 정보