Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Excel & VBA---Brain Training




아래 프로시져를 실행하면

Sub MakeData() Dim iX As Integer With Worksheets.Add .Name = "SortDatas" For iX = 1 To 500 .Cells(iX, 1) = GetData Next End With End Sub Function GetData() Dim iX As Integer Dim sS As String Dim sE As String For iX = 1 To 3 sS = sS & Chr(65 + Int(Rnd() * 25)) sE = sE & Chr(65 + Int(Rnd() * 25)) Next sS = sS & "_" & Int(Rnd() * 100) + 100 GetData = sS & "_" & sE End Function

DSE_232_WGA 와 같은 정보가 500개 만들어 진다
만들어진 문자열정보중에서 중간에 박혀있는
숫자를 기준으로 오름차 정렬을 하여 보는 문제!!

위의 코드에서 왜??에러가 난다고 한다
.Name="SortDatas"
로 하여 시트명을 하나 만들어서 돌리고 난후
또 돌리면 에러가 나는 것!!
이미 어떤이름으로 시트가 만들어졌는데 또 같은 이름으로 하면
당연히 에러가 난다

이것도 각자가 에러가 안나게 처리해보시도록!!!
방법은 여러가지..
같은 이름의 시트가 있는지 확인하여 있으면 삭제하던가..
무조건 삭제하던가..
그렇지 않으면 일련번호를 붙여가면서 시트를 추가하던가
SortDatas1
SortDatas2
SortDatas3
와 같이 일련 번호를 붙이던가
....

문자열의 중간에 _ 표시가 들어가 있으니
이것을
Split함수로 Split("문자열","_") 로 하게 되면
배열이 탄생하게 된다
그러니 배열을 받을 변수를 하나 만들어 놓고

이때 배열을 받을 변수는 반드시 Variant타입이여야 한다는 점
잊지 마시고

Dim arrX As Variant

arrX=Split("문자열정보","_")로 하면
예를 들면
아래와 같이 된다

arrX=Split("ROH_101_NHT","_")

라고 하면
arrX변수가 Variant타입이고 배열이 담기게 된 셈이 된다
그러면

arrX(0) 에는 ROH 가 들어있고
arrX(1) 에는 101 이 들어있고
arrX(2) 에는 NHT가 들어가는 배열이 된다는 이야기다!!
...
...
그러니 전체정보를 순환하면서
순환문내에서 각정보를 임시로 위와 같이 배열로 분해하여
arrx(1)을 기준으로 정보의 순서를 바꿔주면 되겠지..
배열과 친하지 않다면 프로그래밍은 파워가 없다

또한 위에서 워크시트를 생성할때
같은 이름이 있다면 새로운 일련번호를 붙여서 추가하여
만들때도
워크시트를 순환하면서 워크시트의 이름을 배열로 분해하여
일련번호의 순서를 찾아나가면 된다
모두 배얼의 힘이다


BrainTraining_068_1.