Excel & VBA---Brain Training
길동이가 1번시트와 같이 인터넷에서 필요한 정보를
얻었는데 행과 행이 뚝뚝 불규칙하게 떨어져있고
A로 시작되는 단어,B로 시작되는 단어등이 한행에 한꺼번에
들어 있다
이것을 좀 찾아보기 쉽게 2번 시트와 같이 재정렬하고 싶다
단어 하나,하나 찾아서 콤마별로 구분하여 정리하자면
날 밤을 새야 한다..
어떻게 하면 될까???
엑셀프로그래머는 10~30 분(자판 실력에 따라서 틀린다)이면
뚝딱거려서 만들수 있을것이다
각자 연구 하여 보시기 바란다
어떤 함수나 메소드나 속성이 필요할까??!!
아래는 문제지가 들어 있는 화일이다
문제화일 다운로드
참고로 정보의 내용은 사람의 심리상태,정서상태를 수식하는
형용사이다,관심있는 분들은 이것도 좋은 정보가 될것이다
해설화일은 아래에..!!!
XL_Training_010.
질문:
안녕하세요...
XL_Training_010를 공부하던중에 배열을 횡방향으로 바꾸고 싶어
다음과 같이 수정하였습니다.
Sub arrangDATAS()
Dim rDatas As Range
Dim shtX As Worksheet
Dim rX As Range
Dim arrX As Variant
Dim rStart As Range
For Each rX In rDatas.Cells
If rX <> "" Then
arrX = Split(Replace(rX, " ", ""), ",")
Set rStart = shtX.Range("A65536").End(xlUp)
If rStart <> "" Then
Set rStart = rStart.Offset(1)
End If
'rStart.Resize(UBound(arrX) + 1) = Application.Transpose(arrX)
'아래와 같이 열방향으로 하고 싶어서..
rStart.Resize(, UBound(arrX) + 1) = arrX
End If
Next
End Sub
rStart.Resize(, UBound(arrX) + 1) = arrX 에서 순환중...에러가 납니다...
실은 어디서 정보를 얻어오던..
어디에 정보를 전달하던..
정보를 얻어오는 곳에 대한 유효성검사와
정보를 전달하는 부분에 대한 유효성검사를 항상하는 것이 원칙이다
그러나..프로그래밍을 하다 보면 갈길만 바쁠쁜 이것저것 확인하는 절차는
생략되기 일쑤다..
좋은 소루션을 만드는 방법은 재수없는 소리를 들을 만큼
따지고 또 따지고 정보를 받아올것인지..정보를 전달할 것인지를 결정하여야 한다
스스로 프로그래머가 확인하는 습관을 갖는 것이 상책이다
위의 경우는
rStart.Resize(,Ubound(arrX)+1)
한다고 하면 열방향으로 rStart범위를 확장하겠다는 것인데
2007버전외에서의 열의 갯수는 256개밖에 안되는데
Ubound(arrX)값이 공교롭게도 320개라고 한다면 방법을 바꾸어야 한다
행방향으로야 몇만줄이 넘어가니까 확인 할일도 아니지만..
열방향으로는 댐박에 에러가 날일이다
좋은 습관은
If UBound(arrX)+1>200 Then
MsgBox "열의 갯수가 부족합니다..확인하시고 다시 하세요!!"
Else
rStart.Resize(,Ubound(arrX)+1=arrX
End If
Good Luck to your programming!!!!