엑셀에는 MOD라는 함수가 있습니다. MOD는 어떤 수를 다른 수로 나눈 나머지를 구하는 함수입니다. 10을 3으로 나누면 10 = 3*3+1이므로 나머지가 1입니다. MOD 함수는 셀에 =MOD(10,3) 이런식으로 적습니다. 이 함수는 10을 3으로 나눈 나머지라는 뜻입니다.
이 함수를 이용하면 숫자를 자리수 별로 나누는 것이 가능해집니다. 214라는 3자리 자연수를 각 자리수로 숫자를 분해하면 2,1,4가 됩니다. 214에서 1의 자리의 4를 뽑아내는 것은 어렵지 않습니다. 214를 10으로 나눈 나머지는 1의 자리(4)이기 때문에, MOD(214,10)을 하면 1의 자리를 뽑아낼 수 있습니다.
214에서 1을 뽑아내는것은 한단계를 더 거쳐야 합니다. 우선, 214에서 4를 뺍니다. 그럼 210이 되는데, 210을 10으로 나눕니다. 그럼 21이 됩니다. 이렇게 새롭게 생성된 21에서 1의 자리를 뽑아내면 1이 나옵니다. 이를 식으로 나타내면, MOD((214-MOD(214,10))/10,10) 이렇게 됩니다.
214에서 2를 뽑아내는 것은 앞선 21에서 1의 자리인 1을 빼면 20이 되고, 이 20을 10으로 나누면 2가 됩니다.
셀A1에 우리가 원하는 난수가 있다고 가정을 해보겠습니다. C1,D1,E1에 1의 자리 10의 자리 100의 자리수를 뽑아낸다고 하면, C1에는 MOD(A1,10)이, D1에는 MOD((A1-MOD(A1,10))/10,10), E1에는 ((A1-MOD(A1,10))/10-MOD((A1-MOD(A1,10))/10,10))/10가 될것입니다.
D1을 좀 더 간단하게 표현을 하면, MOD((A1-C1)/10,10)이 될것이고, E1은 ((A1-C1)/10 - D1)/10 이 됩니다.
식을 보면 복잡해 보일 수 있지만, 원리는 그렇게 어렵지 않습니다. 원리를 이해하면 복잡해 보이는 이식도 어렵지 않게 사용할 수 있을 것입니다.
'엑셀 & VBA' 카테고리의 다른 글
1-5. 숫자야구 - 같은 숫자가 있는지 확인하기 (0) | 2021.07.14 |
---|---|
1-4. 숫자야구 - 중복된 확인 (if) (0) | 2021.06.01 |
1-2. 숫자야구 난수 생성(randbetween) (0) | 2020.12.28 |
1-1. 숫자야구 만들기 (0) | 2020.12.28 |
1. 숫자야구 (0) | 2020.12.27 |