Excel & VBA---Brain Training



아래의 코드를 실행하시면 아래의 그림과 같이 데이타가 만들어진다
각자 복사하여 실행시키시기 바란다

Sub createDatas() Dim iX As Integer, iY As Integer Dim bX As Boolean Const COL_NUM As Integer = 30 Const ROW_NUM As Integer = 300 For iX = 1 To ROW_NUM For iY = 1 To COL_NUM ActiveSheet.Cells(iX, iY) = getData Next Next With ActiveSheet.UsedRange.Font .Name = "tahoma" .Size = 11 .Parent.Columns.AutoFit End With End Sub Function getData() Dim iX As Integer, sTemp As String, iCharNum As Integer Const STR_ As String = "0123456789" Const CHAR_NUM As Integer = 5 iCharNum = Len(STR_) For iX = 1 To CHAR_NUM sTemp = sTemp & Mid(STR_, Int(Rnd() * iCharNum) + 1, 1) Next getData = "'0" & sTemp End Function



물론 다 만들어 놓은후 만드는것은 아무나 만든다
위의 구문을 수정하여..
보기에는 숫자같은 문자열 정보를 하나 심어 보시라는 이야기다
3000개의 셀중에서 딱 한셀만..

방법은 여러가지겠지만 아래와 같이 순환이 끝난후
난수로 0이라는 숫자가 섞인 정보를 찾아서 고쳐줄수 있겠다

Do iX = Int(Rnd() * ROW_NUM) + 1 iY = Int(Rnd() * COL_NUM) + 1 Set rX = ActiveSheet.Cells(iX, iY) Loop While InStr(rX, "0") = 0 rX = Replace(rX, "0", "O")

문제는 위와 같은 정보를 인터넷이나 어떤 다른 프로그램에서
엑셀시트에 옮겨놓고..즉 위에서 실행된 내용이 그런 정보라고 하고
각열별로 열머리에 각열의 정보의 갯수와 합계와 평균을 계산하여
놓으라는 이야기다..
이때 숫자가 아닌 하나 심어 놓은 잘못된 정보를
찾아서 o이라는 문자를 숫자 0으로 바꾼후 계산을 하라는
이야기다
다른 곳에서 얻어온 정보에 대한 유효성검사없이
계산을 흔히 하여 잘못된 결과를 얻게 되는 경우가
많아서 그런것에 대한 대응연습이다


Braintraining_033.