본문 바로가기

엑셀 & VBA

1-3. 숫자야구 자리수 별로 숫자 뽑아내기 (Mod)

 엑셀에는 MOD라는 함수가 있습니다. MOD는 어떤 수를 다른 수로 나눈 나머지를 구하는 함수입니다. 10을 3으로 나누면 10 = 3*3+1이므로 나머지가 1입니다. MOD 함수는 셀에 =MOD(10,3) 이런식으로 적습니다. 이 함수는 10을 3으로 나눈 나머지라는 뜻입니다. 

MOD 함수

 이 함수를 이용하면 숫자를 자리수 별로 나누는 것이 가능해집니다. 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 이 됩니다.

 

 식을 보면 복잡해 보일 수 있지만, 원리는 그렇게 어렵지 않습니다. 원리를 이해하면 복잡해 보이는 이식도 어렵지 않게 사용할 수 있을 것입니다.