[Excel 매크로] 셀에서 셀을 지정할 수있는 것은 활성 시트에만 있습니다.

5171 단어 ExcelExcelVBA
데이터를 분석하고 즐길 수있는 매크로를 만들려고했을 때 어쩔 수없는 곳에서 그만두었습니다.
함께 둡니다.

무엇을 하고 싶었는가



Sheet1이 이런 느낌이라고 한다.


이 때 각 조건에서 "Current1"만 Sheet2에 정리하고 싶습니다.
이런 느낌↓↓↓


이 경우는 수가 적기 때문에 손으로 할 수 있지만, 데이터가 늘어나면 상당히 번거롭다.

복사하는 것만으로는?



이전 이 사이트을 보고 "하~스고"라고 생각했으므로, 카피는 이하와 같이 쓰기로 하고 있었다.
Worksheets("Sheet2").Range("C5:C26").Value = Worksheets("Sheet1").Range("C5:C26").Value

그런데, 이번에는 일정 간격으로 배열 된 데이터를 복사하고 싶습니다.
위의 더미 데이터에서는 3 조건이지만, 조건수는 향후 바뀔지도 모르므로, 이것을 변수로 하여 For문으로 돌릴 수 있도록 하자. 그렇다면 Cells (row, column)로 셀을 지정하는 것이 뭔가 편리합니다.

따라서 복사본을 다음과 같이 다시 씁니다.
Worksheets("Sheet2").Range(Cells(5,3), Cells(26,3)).Value = Worksheets("Sheet1").Range(Cells(5,3), Cells(26,3)).Value

"C5:C26"을 Cells(5,3), Cells(26,3) 에 재작성했을 뿐이지요. 실제로 여기에 변수를 넣고 있습니다.

오류 토



그러나, 상기 코드에서는 생각한 대로 움직이지 않고.


조사한 결과, 셀에서 셀을 지정할 수있는 것은 활성 시트 내에서만 보입니다.
이 정보에 도착하기까지 많은 시간이 걸렸습니다 ...

해결책



이 사이트 의 신세를 졌습니다.

결론을 말하면 Cells의 상위 객체식을 생략하지 않고 쓰면 움직입니다.
꼭 상기 사이트도 참조하십시오.
Worksheets("Sheet2").Range(Sheets("Sheet2").Cells(5,3), Sheets("Sheet2").Cells(26,3)).Value = Worksheets("Sheet1").Range(Sheets("Sheet1").Cells(5,3), Sheets("Sheet1").Cells(26,3)).Value

이상!

Reference


  • Office TANAKA - 셀 작업
  • 강사 네타장 - 셀 복사본을 시트 간에 수행하는 Excel 매크로
  • 좋은 웹페이지 즐겨찾기