수식이 바뀌면, row들이 자동으로 정렬되도록 한다.

jinwook han·2020년 9월 2일

특정 수식 결과값으로 행들을 정렬한다.
수식이 바뀌는 일이 잦은데, 수식이 바뀌면 알아서 행들이 정렬이 되게끔 하고 싶다.

목표

수식이 바뀌면 행들이 알아서 정렬이 된다.
수식을 관리하는 지점은 한 곳이다.

수식과 행들을 연동한다.

첫 번째 단계로, 수식이 바뀌면 그 수식을 쓰는 모든 행들이 적용되게끔 한다.

  1. 수식을 바꿀 수 있고,
  2. 수식과 행이 연동되게끔 하려면
    custom function을 만들어야 한다.

custom function

https://developers.google.com/apps-script/guides/sheets/functions
가이드 문서에 custom function 만드는 방법이 나와있다.

  1. cusotm function을 만든다.
function HELLO(input) {
  return input * 3;
}
  1. save 한다.

  2. 이제 goole spreadsheet에서 HELLO 함수를 사용할 수 있다.

자동으로 정렬하는 하는 방법

sort 함수를 사용한다.
sort의 결과는, 원본 데이터가 바뀜에 따라 자동으로 업데이트가 된다.

예시:

=sort(B9:F12,5,0)

B9:F12 -> 원본 데이터의 장소다.
5 -> 정렬 기준이 되는 데이터 열이다.
0 -> 오름차순 여부다.

수식을 수정함으로써 자동으로 정렬한다

원본 데이터

custom function, sort를 활용했다.
수식을 수정함으로써 자동으로 행들을 정렬할 수 있다.

	A열	B열	C열	D열	E열
1	교대	1	2	3	11
2	서울	4	5	6	29
3	강남	1	2	3	11
4	고담	1	1	3	8

여기서 5열을 더 자세히 보면,

=HELLO(A1,A2,A3)
=HELLO(B1,B2,B3)
=HELLO(C1,C2,C3)
=HELLO(D1,D2,D3)

HELLO함수에 A열,B열,C열의 값이 매개변수로 들어간 결과값들이다.

HELLO 함수는 script에 아래의 내용으로 적혀있다.

function HELLO(input1, input2, input3) {
 
  return input1 * 2 + input2 * 3 + input3 * 1;
}

정렬 적용

원본 데이터에 정렬을 적용한다.

=sort(A1:E4,5,0)

정렬의 기준값(두번째 매개변수 5)은 HELLO 함수의 결과물이다.

결과:

서울	4	5	6	29
교대	1	2	3	11
강남	1	2	3	11
고담	1	1	3	8

HEELO 함수 결과값 기준으로 내림차순으로 정렬했다.

수식을 바꾼다.

이제 HELLO 수식의 내용을 바꾼다.
두 번째 input에 가중치를 더 주자.

function HELLO(input1, input2, input3) {
 
  return input1 * 2 + input2 * 100 + input3 * 1;
}

두번째 매개변수 input2의 가중치를 3에서 100으로 올렸다.

script에서 수식 내용을 바꾼 후, save를 누른다.

수식만 바꿈으로써, 행들을 새로운 기준으로, 자동으로 정렬한다

정렬결과를 다시 본다.

서울	4	5	6	514
교대	1	2	3	205
강남	1	2	3	205
고담	1	1	3	105

행들의 순서가 자동으로 바뀌었음을 확인할 수 있다.
그리고, HELLO 함수가 바뀌었기 때문에, 행들에 적용된 HELLO 함수의 결과값도 바뀌었다.

custom function, sort 기능을 사용했다.
사용함으로써,
1. 수식 관리 지점을 하나로 줄이고,
2. 수식이 새로워질 때마다 행들을 자동으로 정렬할 수 있다.

참고자료

custom function:
https://www.youtube.com/watch?v=6QhEXOwC6pA
https://developers.google.com/apps-script/guides/sheets/functions

sort 기능:
https://www.spreadsheetclass.com/google-sheets-sort-function/

0개의 댓글