[Power Automate] 데이터 형식에 따라 엑셀에 값 넣는 방법

2023. 5. 21. 00:37IT/Power Automate Desktop

안녕하세요. 쿠루가이입니다.

Power Automate Desktop(이하 PAD)에는 프로그래밍 언어처럼 변수라는게 존재합니다. 그리고 이 변수를 담은 목록(list)가 존재하고요. 이 list를 2차원으로 배열한 데이터 테이블이라는것도 존재합니다.

오늘은 변수, 목록, 데이터 테이블을 가지고 어떻게 엑셀에 값을 넣는지 알아보는 시간을 가지겠습니다.

 

변수

변수는 어떤 값을 저장하는 용도로 사용됩니다. C#과 달리 변수 사용할때는 특별히 어떤 데이터형으로 사용한다고 표현하지 않아도 됩니다. 들어가는 값에 따라서 그 데이터형이 자동으로 결정되니까요. 이건 파이썬이랑 비슷하다고 생각하시면 됩니다.

변수를 선언하고 초기화 하기위해서는 변수 → 변수 설정 메뉴를 끌어서 메인 흐름에 놓으면 아래와 같은 화면이 표시됩니다. 변수명은 기본값으로 Newvar인데요.  사용자가 임의로 변수명을 변경할 수 있습니다. 저는 var1으로 변수명을 지정하고 초기값을 '0'하였습니다.

변수 이름 및 초기값 설정 화면

변수를 엑셀에 쓰기 위해서는 Excel → Excel 워크시트에 쓰기를 Main흐름에 넣고 어떤 값을 엑셀 어디 열,행에 쓸지 지정만하면 간단하게 기입이 됩니다. 여기까지는 아주 쉽게 이해하실수 있을겁니다!

엑셀 어디 열,행에 어떤 값을 쓸지 설정하는 화면
엑셀에 값이 기입된 화면

 

목록

목록은 프로그래밍에서는 List 정도로 이해하시면 됩니다. 즉, 같은 타입의 변수값이 형태로 여러개가 들어가 있다는것인데요. 이게 엄청 편리합니다.

예를 들면 엑셀에서 C1:C10까지 1, 2, 3,...,10 이 기입되게 하고 싶다면 앞서 배운 변수란 개념으로만 접근하면 변수 10개를 선언하고 Excel 워크시트에 쓰기를 10번을 넣어주어야 하는데요. 목록을 사용하시면 Excel 워크시트에 쓰기를 1번만 표현해줘도 동일한 효과를 얻을 수 있습니다.

C1:C10에 1~10까지의 값을 넣고 싶다!

먼저 변수 → 새 목록 만들기를 Main흐름에 끌어다 놓습니다. var1 변수를 10번 반복하는 loop를 만들고 반복할 때마다 1씩 증가 시켜 목록에 넣는 작업을 합니다. 여기까지는 1~10의 데이터를 만들기 위한 작업이고요.

1~10까지의 값이 들어있는 목록을 만든다

실제로 엑셀에 쓸때는 10번 반복을 하되, 엑셀에 쓰는 위치가 C1, C2, C3  이런식으로 내려가야합니다. 그래서 변수 i를 선언해주고 i값을 1씩 증가 시켜서 반복할때마다 C1,C2,C3 같이 행이 내려가게 표현을 해주어야합니다.

 

Excel 워크시트에 쓰기 상세 내용을 보면, 열은 C로 고정되어 있는데 행값은 변수i의 값으로 되어 있죠? 반복이 될때 i값이 1씩 증가하고 이 증가된 값이 C1, C2, C3의 형태로 표현이되는것입니다. 그러므로 Excel 워크시트에 쓰기는 딱 한번만 표현해도 모두 표현이 되는것입니다. 흐름수가 적어지니 직관적으로도 알아보기 쉽고 디버깅할때도 쉬워집니다. 여기까지가 목록에 대한 설명이였습니다.

 

데이터 테이블

데이터 테이블은 방금 배운 목록이 행과 열로써 표현된 형태, 즉 표(Table)입니다. 프로그래밍에서의 2차원 배열이라고 생각할 수 있겠네요. 설명을 위해서 변수 → 데이터 테이블 → 새 데이터 테이블 만들기를 Main흐름을 끌어다 놓고 [편집]버튼을 눌러서 아래와 같이 입력을 해줍니다. 

이 데이터를 E1:I3에 입력하려면 어떻게 해야될까요? 앞서 목록에서는 i변수를 증가시켜서 행의 숫자를 증가시켰는데요. 이번에는 목록이 2개가 된것이니까 행뿐만아니라 열도 증가시켜야합니다.

그래서 변수를 i뿐만 아니라 j도 필요해졌습니다. 변수i,j를 선언하고 초기값을 0으로 지정합니다. 그리고 조건 → 반복 조건을 Main흐름에 끌어서 중첩되게 배치합니다. 그럼 여기서 한가지 의문이 있을겁니다. 방금전 입력한 열의 개수는 5개이고, 행의 개수는 3개인데 우리는 이미 값을 입력하면서 행,열 개수가 몇개인지 아는 상황인데요. 중간에 값이 추가 되거나 삭제되었을 때 매번 Main흐름의 숫자를 바꿔줘야되는 불편함이 생깁니다. PAD에서는 이 부분을 친절하게도 현재 데이터 테이블의 행, 열의 개수를 알려주는 맴버변수를 제공해줍니다. 열의 개수는 DataTable.Columns.Count로 알 수 있고, 행의 개수는 DataTable.RowsCount로 알 수 있습니다. 아까 선언한 중첩 반복 조건에 이 값들만큼만 반복하도록 해주면 OK입니다.

여기서 열 값은 기존 목록에서 알파벳으로 표현해주었는데요. 이번에는 열도 1씩 증가해서 위치를 변경해야되기때문에 숫자로 표현해야합니다. 엑셀은 1부터 시작하기때문에 A == 1, B == 2, C == 3 을 의미하게 됩니다. 우리는 엑셀의 E1부터 값을 입력해주어야 하니까 i에다가 +5를 해준 값을 입력 해주고요. j는 현재 초기값이 0이니까 +1을 해주었습니다.

그리고 한가지 주의해야될 사항이 있습니다. 행,열을 표현하는 순서가 엑셀과 DataTable이 다릅니다.  엑셀은 '열,행'으로 표현을 하는데 DataTable은 '행, 열'로 표현을 해서 생각없이 하다간 이상한 값이 들어가버리고 맙니다. 제가 실제로 겪은거여서요. 그림을 그려봤는데 한번 보시면 감이 잡히실겁니다.

엑셀에서는 '열, 행'으로 위치를 표현합니다. 그래서 열 부분엔 변수i가 행 부분엔 변수 j가 들어가는데요.

엑셀에서는 '열,행'으로 위치를 표현한다

데이터 테이블은 '행, 열'로 표현하므로, 열부분에 변수j가 들어가야하고, 행부분에 변수i가 들어가야 의도했던 위치와 값이 엑셀에 쓰여지게 됩니다. 그림을 잘 보셔서 엑셀 좌표와 데이터 테이블 좌표를 확인해주세요.

DataTable은 '행, 열'로 표현한다

 

완성된 흐름

PAD에서 구현한 전체 FLOW는 다음과 같습니다.

 

흐름 실행하기

자 이제! 이때까지 작성한 흐름을 실행해보도록 하겠습니다. 아래 영상을 참고해주세요.