[excel - python - uipath] 엑셀 자동화에 대해서 알아보자(5-1)

루까까·2023년 8월 1일
0

Excel 자동화

목록 보기
9/25

이번 시간에는 Copy/Paste Range activity에 대해서 알아보자.

1. Copy/Paste Range

Copy/Paste Range란 소스 데이터를 복사하여 대상 엑셀에 소스 데이터를 붙여넣는 기능을 지원하는 activity다.

기본적으로(소스 -> 대상)
1. 시트 -> 시트
2. 범위 -> 시트
3. 범위 -> 범위
4. 범위 -> 셀
5. 셀 -> 셀
6. 셀 -> 범위
을 지원한다.

1-1. 소스설명

  • 소스 칸에는 내가 복사하고자 할 데이터의 위치를 기입한다.
    • 시트 혹은 범위를 기입해도 무방하다.
      • 시트를 기입할 경우, 해당 시트 전체를 복사한다.
        • Excel.Sheet("시트명")
      • 범위를 기입할 경우, 해당 범위를 복사한다.
        • Excel.Sheet("시트명").Range("범위")
  • 4가지 유형으로 데이터를 복사 가능하다.
    1. 모두
      • 하단의 모든 내용은 모두 포함하여 복사
      • 보여지는 값만 복사
    2. 수식
      • 보여지는 값이 아닌 해당 수식을 복사
    3. 형식
      • 데이터 형식을 복사(엑셀 format이라고 생각하면 편하다.)
  • 또한, 4가지 유형으로 헤더 값의 유,무를 정할 수 있다.
    1. 머리글 제외
      • 시트 복사 혹은 범위 복사 상관없이 헤더값 제외
    2. 머리글 포함
      • 시트 복사 혹은 범위 복사 상관없이 헤더값 포함
    3. 소스 범위에서만 머리글 제외
      • 시트 복사인 경우에만 헤더값 제외
    4. 소스 테이블에서만 머리글 제외
      • 범위 복사인 경우에만 헤더값 제외

1-2. 대상 설명

  • 대상 칸에는 복사할 데이터를 붙여넣을 위치를 기입한다.
    • 시트 혹은 범위를 기입해도 무방하다.
      • 시트를 기입할 경우, 해당 시트에 데이터를 위에서부터 붙여넣는다.
        • Excel.Sheet("시트명")
      • 범위를 기입할 경우, 해당 범위에서부터 데이터를 붙여넣는다.
        • Excel.Sheet("시트명").Range("범위")
  • 붙여넣고자 하는 위치에 기존 데이터가 있을 경우, 무시하고 복사한 데이터를 붙여 넣는다.

Copy/Paste Range 공식문서

2. 연습

연습용.xlsx sheet1에 다음과 같은 데이터가 있다고 가정하자.

해당 데이터 Copy/Paste Range를 통해 연습용.xlsx에 sheet2에 붙여넣어보자.

  • 기본 설정으로는 모두/ 머리글 포함으로 설정하였다.

실행 결과 sheet2에도 같은 데이터가 복사되었음을 확인 할 수 있다.

여담

바꾸기 체크박스의 경우 행과 열을 반대로 넣어주는 기능이다.
예를들어
11 12 13
21 22 23
이라는 데이터가 있을 때, 바꾸기를 체크하고 실행하면
11 21
12 22
13 23
으로 바뀐다.

여담2

위에서 언급한 3. 범위 -> 범위의 경우 서로 다른 크기의 범위일 경우 어떻게 될까?
큰 범위에서 작은 범위를 지정할 경우는 쉽게 추측이 되지만 작은 범위에서 큰 범위로 가능 경우는 추측이 쉽게 되지 않는다. 필자 또한, 궁금하여 실제 수행을 해보았다.
예를들어 소스범위가 A2:B3이고 대상범위가 B3:E6이라고 가정해보자.
(소스 데이터는 2.연습에서 쓰인 데이터와 동일하다고 가정)
결과로는 다음과 같이 나온다.

그럼 B3:E5는 어떻게 나올까?

위에 결과가 차이가 나는 이유는 다음과 같다.
만약 소스범위 데이터가 2 x 2 형식일 경우, 대상 범위를 2n x 2n로 설정할 경우, 복사해서 채우지만 아닌 경우에는 복사한 데이터만 채우게 된다.
위와 같은 상황도 전자는 소스 데이터는 2 x 2 대상 범위는 4 x 4 이기에 복사해서 채웠지만
후자는 3 x 4이기에 2 x 2 데이터만 붙여넣은 것이다.

여담3

공식 문서에서는
4. 범위 -> 셀
5. 셀 -> 셀
6. 셀 -> 범위
도 지원한다고 하였는데 소스와 대상에 셀을 어떻게 지정하는지 궁금증이 생긴다.

Excel.Sheet("시트명").Cell("셀")

로 코드를 집어넣으면 uipath에서는 오류가 나온다. 이것에 대해 잘아시는 분은 댓글을 남겨주시면 감사하겠습니다.

profile
기타치는 개발자

0개의 댓글