인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

csb3811님의 프로필 이미지
csb3811

작성한 질문수

엑셀 매크로와 VBA 기초부터 실무활용까지 완전 정복

취합 및 반복 프로시져

작성

·

229

0

선생님 안녕하세요, 강의를 듣고 실무에 적용해봤는데 에러가 뜨는 이유가 궁금합니다. 

행이 수백개 있는 '원본파일'에서 각 행별로 '중간가공파일'을 거쳐 '취합파일'에 붙여넣기 하려고합니다.

매크로 기록은 '중간가공파일'에서 시작했습니다.

 

[프로시저]

Dim i As Integer   

For i = 1To n 'n을 마지막 행번호로 표현하고 싶으면 어떻게 해야되나요?

    Range("B9").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[1]"  '여기서 에러가 뜹니다..

    Range("B10").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[3]"   

    Windows("중간가공파일").Activate

    Range("H9", Range("H9").End(xlToRight).End(xlDown)).Copy ' 원본파일에서 끌어온 데이터를 중간가공파일에서  수식 작업을 하고 범위지정하여 취합파일에 붙여넣는 과정,  cf) H9=B9, H10=B10

    Windows("취합파일.xlsx").Activate

    Range("A1").End(xlDown).Offset(1, 0).PasteSpecial , xlPasteSpecialOperationNone '값붙여넣기 인수는 무엇인가요?

 Next i

 

너무 설명이 장황하여 잘 전달될지 모르겠지만,,,,도움 요청드립니다.

 

감사합니다.

 

답변 1

0

엑셀여신님의 프로필 이미지
엑셀여신
지식공유자

안녕하세요?  질문과 오류가 발생한 문장 위주로 설명드리겠습니다.

 

1. For i = 1To n 'n을 마지막 행번호로 표현하고 싶으면 어떻게 해야되나요?

   n 대신에 Cells(Cells.Rows.Count, 1).End(xlUp).Row   를 사용해보세요

   cells.rows.count는 마지막 행 번호를 뜻하여 A열의 마지막 셀에서 ctrl + ↑를 눌렀을 때 이동하는 셀 번호를 표시하는 문장입니다.

   최종적으로

   For i=1 to Cells(Cells.Rows.Count, 1).End(xlUp).Row   입니다.

 

 2. Range("B9").FormulaR1C1 = "='[원본파일]시트1'!R[i]C[1]"  '여기서 에러가 뜹니다..

     Range("B9").Value = "=[원본파일.xlsx]시트1!A" & i   사용해보세요

i는 변수이기 때문에 따옴표 안에 사용할 수 없고, 변하지 않는 수식 부분만 따옴표 안에 넣고 변수는 &연산자로 연결해 사용합니다. 그리고 r1c1 방식 대신  Value 속성을 사용합니다.

 

3. Range("A1").End(xlDown).Offset(1, 0).PasteSpecial , xlPasteSpecialOperationNone '값붙여넣기 인수는 무엇인가요?

   Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues

값 붙여넣기는 PasteSpecial 메서드의 Paste인수 값으로 xlpastevalues 값을 사용합니다. 그리고 PasteSpecial 뒤에 콤마를 찍지 않고 한 칸 띄운 후 입력하면 됩니다.

 

추가로 발생되는 오류나 질문 사항 있으시면 Q&A 올려주세요~

 

csb3811님의 프로필 이미지
csb3811
질문자

선생님 덕분에 에러도 해결하고 업무시간도 대폭 단축했습니다. 감사합니다^^

csb3811님의 프로필 이미지
csb3811

작성한 질문수

질문하기