나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 김인현 (alexkim7)

추천:  2
파일:     조회:  2179
제목:   for each관련 추가 질문
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):2010

* 아래줄에 질문을 작성하세요 >>

아래 질문을 통해 답변을 받았는데요..

추가 라인에서 에러가 뜨네요..

for each에서 각 인수를 배열의 변수로 읽어들이는데

coulumns(x,4) 에서 에러가 발생합니다.

어떻게 수정하면 될까요?

====================================================

Dim x As Variant
Dim s As Variant

s = Array(35,36,37,47,48,49,53,54,56,57,63,64,65,66,98,103,108,109)

 for each x in s

    Columns(x,4).Select      ' 각 해당 컬럼을 모두 선택하여 날짜 서식으로 변경하기
    Range(Selection, Selection.End(xlDown)).Select
    Selection.TextToColumns Destination:=Range("AI1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 5), TrailingMinusNumbers:=True

  Next x

End Sub
 
[불량 게시물 신고]  
조삿갓x = 35일 때
Columns(x)는 35번째 열 전체를 가리키는 개체입니다.
그런데 뒤에 ,4는 왜 사족으로 붙었을까요?

Columns(x).Select

한 줄 명령만으로 이미 x번째 열 전체가 선택되므로

Range(Selection, Selection.End(xlDown)).Select

역시 불필요한 사족입니다.

서식 지정 방법 역시 불필요한 사족만 몽땅 달고 있네요.
07-05 (23:18)
삭제 ■신고
조삿갓For Each x in s
     Columns(x).NumberFormatLocal = "yyyy-mm-dd"
Next x

로 간단히 해결됩니다
07-05 (23:19)
삭제 ■신고
조삿갓만일 3행 위쪽에 제목 부분이 있어서
4행부터 아래쪽으로만 서식을 바꿀 의도라면
Columns 대신 Cells 개체를 사용하여 다음과 같이 쓰세요.

For Each x in s
       Cells(4,x).Select
       Range(Selection, Selection.End(xlDown)).Select
       Selection.NumberFormatLocal = "yyyy-mm-dd"
 Next x
07-05 (23:24)
삭제 ■신고
        
  

작성일 : 2017-07-05(22:41)
최종수정일 : 2017-07-05(22:41)