특정 수식 결과값으로 행들을 정렬한다.
수식이 바뀌는 일이 잦은데, 수식이 바뀌면 알아서 행들이 정렬이 되게끔 하고 싶다.
수식이 바뀌면 행들이 알아서 정렬이 된다.
수식을 관리하는 지점은 한 곳이다.
첫 번째 단계로, 수식이 바뀌면 그 수식을 쓰는 모든 행들이 적용되게끔 한다.
https://developers.google.com/apps-script/guides/sheets/functions
가이드 문서에 custom function 만드는 방법이 나와있다.
function HELLO(input) {
return input * 3;
}
save 한다.
이제 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/