본문 바로가기
컴퓨터 인터넷

엑셀 랜덤 함수(랜덤 엑셀로 문장 랜덤 조합, INDEX, RANDBETEWWN)

by 통합메일 2018. 8. 14.
반응형

가끔 엑셀로 랜덤 함수로 뭔가를 할 수 있지 않을까 생각해 볼 때가 있다. 그래서 얼마전에 랜덤으로 문장을 무작위로 만들어 내야 할 일이 있었을 때 나름대로 연구를 해서 이른바 랜덤 엑셀이라는 것을 만들어 보았다. 대략적으로 볼 때 세 가지 종류의 시트로 구성되어 있다. 이해를 돕기 위한 예제 파일은 포스팅 마지막에 위치해있다.

핵심 함수는 다음과 같다.

=INDEX('랜덤소스시트'!A:A,RANDBETWEEN(1,9),1)


일단은 메인 시트(2.랜덤 결합 시트)

이 파일은 크게

1.랜덤 완성

2.랜덤 결함

3.랜덤 소스

의 시트로 구성되어 있다.


즉, 3을 2에서 한 시트에 모으고, 그것을 문장의 형태로 1에서 구현해 내는 것이다.

대부분의 랜덤 함수는 이 2.랜덤결합 시트에서 사용된다.

1.랜덤 완성 시트에서는 2.랜덤결합에서 출력된 문장을 하나의 문단으로 합치는 것뿐이다.

좀 번거롭기는 하지만 이것이 내 능력의 한계였다.

근데 사실 함수는 연구해서 만들어내면 되는 일인데

더 어려운 것은 랜덤 함수의 소스로 사용된 문장을 만들어내는 게 어렵다.

즉 풍부한 어휘를 가지고 어디에나 어울릴만한 공기 같은 문장을 지어내는 게 정말로 어렵다.

3.랜덤 소스 시트들

이처럼 3.랜덤 소스에 해당하는 시트에는

각각의 문장 역할을 하는 비스무리한 내용들이 상이한 표현으로 들어가 있다.

이 표현들이 풍부하면 풍부할 수록 더욱 다채로운 랜덤 결과물이 나올 것은 당연하다.

다시 2.랜덤 결합 시트

자 이제 랜덤 결합의 꽃이라 할 수 있는 INDEX, RANDBETWEEN 함수를 살펴보자.

사실 나도 어쩌다가 완성시킨 것이기 때문에 정확한 작동원리는 알 수 없다.

그냥 한 번 만들어 놓고 필요할 때 다시 찾아서 쓰는 수준에 불과하다.

구조는 이렇다.

=INDEX('랜덤소스시트'!A:A,RANDBETWEEN(1,9),1)

해석을 하자면, 랜덤소스시트에 있는 A1셀~A9셀 중에서 하나만 랜덤으로 골라서(RANDBETWEEN) 표시해라(INDEX)라고 이해할 수 있을 것 같다. 정확한지는 사실 나도 모르겠다. 인덱스 함수가 엄청 유용하다는 말만 들었고, 그게 정확히 어떤 기능을 하는지 잘 모르겠다.

하여간 랜덤소스가 되는 시트마다 소스의 개수가 달라진다면 그 개수에 따라서 저 숫자 9를 바꿔줘야 한다.

문장의 샘플이 9개라면 9지만, 7개라면 7이 되어야 한다.

문장 샘플에 따라서 숫자가 변하는 걸 확인하시라.

마지막으로 1.랜덤완성

이제 랜덤결합 시트에서 출력된 문장들을 랜덤 완성 탭에서 합쳐주는 작업만 남았다.

여기서는 그냥 단순하게 =을 입력해주고 랜덤결합 시트에 있는 셀들을 하나하나 &로 연결해주기만 하면 된다.

그런데 이게 말이 쉽지 처음에는 엄청 헷갈리고 눈이 핑핑 돌아간다.

어쩌면 이것보다 더 쉬운 방법이 있을텐데 내가 모르고 있는 것이리라는 생각이 든다.

엑셀의 세계는 참 무궁무진한 것 같다.

예제파일 첨부한다.

랜덤 엑셀 예제.xlsx



반응형

댓글