• 카테고리

    질문 & 답변
  • 세부 분야

    오피스

  • 해결 여부

    미해결

취합 및 반복 프로시져

22.01.16 23:07 작성 조회수 158

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

질문자

2022.01.19

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