
이번 시간에는 Find First/Last Data Row activity에 대해서 알아보자
1. Find First/Last Data Row
Find First/Last Data Row는 지정된 시트, 범위 또는 테이블에서 데이터가 시작되는 행과 데이터를 포함하는 마지막 행의 행 번호를 찾는 기능을 지원하는 activity이다.


가장 주력인 기능은 당연히, 본인이 지정한 열의 첫 번째 행(시작되는 행)과 마지막 행 index를 제공하는 것이다.
물론 부가적으로 여러 기능 또한, 제공하고 있다.
1-1.첫 번째 행 index 제공
- '다른 이름으로 첫 번째 행 번호 저장'에다가 변수(int형)를 집어넣으면 해당 변수에 index 반환
1-2.마지막 행 index 제공
- '다른 이름으로 마지막 행 번호 저장'에다가 변수(int형)를 집어넣으면 해당 변수에 index 반환
- '건너뛸 빈 행'
- 해당 숫자에 따라 최대 건너띄는 빈값을 허용
- 예를 들어 숫자 3이면 최대 3행 까지는 빈값이여도 연속된 행이라고 인지함
- '마지막 행 오프셋'
- 해당 숫자에 따라 마지막 행 index를 변화 시킴
- '마지막 행 - 마지막 행 오프셋' 값이다.(마지막으로 입련된 행의 경우, 비어 있는 첫번 째 행이면 +1을 해줘야함 )
- '첫 번째 행 오프셋'
- 해당 숫자에 따라 첫번째 행 index를 변화 시킴
- '첫 번째 행 + 첫 번째 행 오프셋' 값이다.
1-3.마지막 행을 다음으로 구성의 경우는 마지막 행을 두 가지로 표현하는 방법이다.
- 마지막으로 입력된 행
- 데이터가 마지막으로 입력된 행값을 반환
- 3행까지 데이터가 있다면 3을 반환
- 비어 있는 첫번 째 행
- 데이터가 마지막으로 입력된 행 다음값을 반환
- 3행까지 있는 데이터라면 4를 반환
1-4.헤더 포함
- 헤더값 유무이다.
- 선택하면 열 이름을 실제 헤더값으로 기입해줘야 한다.
- 선택하지 않으면 A, B 식으로 기입해줘야 한다.
1-5.표시되는 행만
- 표시되는 행 유무이다.
- 선택하면 보여지는 행만 해당된다.
Find First/Last Data Row 공식문서
2. 연습
연습용.xlsx sheet1에 다음과 같은 데이터가 있다고 가정하자.

- 기본적으로 헤더값 포함, 체크 표시되는 행만 체크X로 진행하였다.
- 첫번째 행 index를 저장할 변수는 'first', 마지막 행 index를 저장할 변수는 'last'라고 선언하였다.
2-1. 마지막 행을 다음으로 구성의 경우 -> 마지막으로 입력된 행

결과값으로는 다음과 같은 결과가 나왔다.

- 첫 번째 행의 경우, 머리글을 제외하고 시작한 값을 저장하기에 first가 2라는 값이 나오게 되었다.
- 마지막 행의 경우, 마지막으로 입력된 행이기에 last에 4라는 값이 나오게 되었다.(실제 데이터도 4행까지 기입 됨)
2-2. 마지막 행을 다음으로 구성의 경우 -> 마지막으로 입력된 행, 마지막 행 오프셋
그럼 2-1과 같은 조건으로 하 되, 마지막 행 오프셋 조건을 달아 두면 결과는 어떻게 나올까?
마지막 행 오프셋을 2로 설정하고 진행해 보자.

결과값으로는 다음과 같은 결과가 나왔다.

- 첫 번째 행의 경우, 위와 마찬가지임으로 first에 2
- 마지막 행의 경우, 위와 마찬가지임으로 last에 원래는 4의 값이지만 마지막 행 오프셋 2로 넣어주었기에 4-2=2인 2값이 나오게 되었다.
2-3. 마지막 행을 다음으로 구성의 경우 -> 마지막으로 입력된 행, 건너뛸 빈 행
연습용 데이터를 조금 변화 시켜 보자.

여기서 2-1과 같은 조건으로 해당 데이터를 실행하면,

- 건너뛸 빈 행 값이 0으로 설정하였기에 3~5행은 3 즉 uipath는 6행부터 다른데이터로 취급하였기에 last값을 2로 반환 하였다.
- 여기서 건너뛸 빈 행값을 3으로 설정하면 다음과 같은 결과가 나오게 된다.


- 방금전까지는 다른 데이터로 취급하여 last값을 2로 반환하였지만 지금은 건너뛸 행값을 설정하였기에 같은 데이터로 취급 따라서 last값을 7로 반환하였다.
여담
- 연습의 경우 sheet값을 기준으로 하였지만 특정 범위도 충분히 지원해 준다.
여담2
만약 데이터의 행보다 마지막 행 오프셋값이 더 크면 결과는 어떻게 나올까? 그럴 경우 -1로 값을 반환한다.