이벤트를 하다보면 난수를 찾아야 하는 경우가 있다.
이럴때 엑셀을 이용해서 난수를 출력하는 방법에 대해서 알아본다.
- 엑셀에서의 난수를 출력하는 방법.
엑셀에서의 난수를 출력하는 가장 기본적인 방법은 RAND() 함수이다. 이 함수를 소수점 이하의 자리를 이용해서 난수를 출력한다.
그러나 우리가 필요한 난수는 소수점 이하자리가 아닐 것이다. - 소수점을 없애자.
이것을 그냥 정수형으로변경을 하게되면. =INT(RAND()) RAND 로 생성된 결과수를 소수점 이하이므로 어떻게 하더라도 0으로만 표시된다. 그럼 어떻게 해야할까? 생각해보자.. ^^ - 간단(?)하게 RAND() 결과물에 *10 을 하면 원하는 결과인 정수형 값을 얻을 수 있다. =INT(RAND()*10)
그런데 이 작업은 단순하게 0부터 9까지의 난수를 표현할 수 밖에 없다.
그럼 또 어떻게 해야할까. 엑셀은 그것을 이룰수 있게 해준다. ^^ - RAND 보다 더 나은 함수 RANDBETWEEN() 이다.
이 함수는 인수 두개 사이의 값을 출력해준다. 예를 들어 RAND(BETWEEN(1,10)) 는 1부터 10 사이의 값에서 난수를 생성해달라는 뜻이다. 자 그럼 난수를 어떻게 만들어야 할까. - 아스키 코드값을 알아보자. 보통의 난수는 단순하게 숫자의 조합이 아니다. ( 물론 숫자만으로도 만들지 - 휴대폰 인증번호 같은 )
약간은 더 복잡하게 만들어야 할 필요가 있을 경우 영문자와 숫자의 조합으로 랜덤문자를 생성한다.
내 경우는 영문자대문자+ 소문자+숫자의 조합으로 만들고 싶다.
그러면 난수를 어떻게 생성해야 할까라는 의문이 생긴다.
아스키 코드값은 우리가 사용하는 다양한 문자의 숫자값을 제시해준다. 이 숫자들을 엑셀의 CHAR 함수로 호출하면 해당 수에 대한 문자를 생성해 준다. - 아스키코드와 난수를 이용한 출력.
아래에 각 문자에 대한 아스키 코드값을 적어두었다.
0-9 는 아스키 코드값 48 ~ 57
a-z 는 아스키 코드값 65 ~ 90
A-Z 는 아스키 코드값 97 ~ 122
로 표시해 줄수 있다. 이 값을 기준으로 난수를 만들어서 char 로 감싸면 아래의 결과가 나온다.
이렇게 하면 한 자리의 난수를 표시하는데는 문제가 없어진다.
그런데 여기서의 또 다른 의문. 난수가 영문대문자일수도있고, 소문자일수도 있고 , 숫자일수도 있는 난수를 만들고 싶은데, 각각의 숫자는 떨어져 있는 상태이다. between 으로만으로는 힘들다. - 원하는 바 : 각 자릿수별로 숫자와 영문자중에 선택되는 난수를 어떻게 선택할까. 그래서 이 부분에 EXCEL 의 switch 구문을 이용했다.
switch 구문은 다음과 같다.
switch(조건,조건첫번째값,실행내용,조건두번째값,실행내용..... )
이걸 응용하면
switch(1과 3중에 하나 , 1일경우 영문대문자,2일경우 숫자, 3일 경우 영문소문자) 를 표시하게 해주면 될것이다.
그에 대한 내용이 아래의 이미지이며.. - 이것의 결과로 3자리의 난수를 만들고 싶다면 아래의 내용을 셀에 입력하면 된다.
=SWITCH(RANDBETWEEN(1,3),1,CHAR(RANDBETWEEN(65, 90)),2,CHAR(RANDBETWEEN(48, 57)),3,CHAR(RANDBETWEEN(97, 122)))&SWITCH(RANDBETWEEN(1,3),1,CHAR(RANDBETWEEN(65, 90)),2,CHAR(RANDBETWEEN(48, 57)),3,CHAR(RANDBETWEEN(97, 122)))&SWITCH(RANDBETWEEN(1,3),1,CHAR(RANDBETWEEN(65, 90)),2,CHAR(RANDBETWEEN(48, 57)),3,CHAR(RANDBETWEEN(97, 122)))
'dev > webDev' 카테고리의 다른 글
프로젝트의 요구사항은 어떻게 변하는가. (0) | 2019.10.11 |
---|---|
개발자 면접관의 시각으로 본 면접을 보는 방법. (0) | 2019.10.01 |
commit 커밋 코드를 알고 있을때 그 코드에서 변경된 화일 목록을 출력하자. (0) | 2018.01.11 |
GA 세션 및 캠페인 만료 기간 처리 기간을 설정하자. (0) | 2018.01.06 |
SMS/LMS/MMS 발송 서비스 업체 찾기. (0) | 2018.01.02 |