본문 바로가기
카테고리 없음

[google spreadsheets] 구글 스프레드시트 여러 영역을 하나의 리스트로 Join 하는 방법

by IT HUB 2020. 10. 28.
728x90
반응형

"시트1" 에는 이렇게 데이터가 들어가 있습니다.
"시트2" 에는 이렇게 데이터가 들어가 있습니다.
"SlNo" 값이 없는것은 빼고 두 시트의 데이터를 합칩니다.

 

구글링을 해보니 아래와 같은 수식이 검색됩니다.

=Query(VMERGE((ImportRange("0AozvCNI02VmpdG9MNkhIWk8xVWJ0XzVsLVN0aHdVUlE","Sheet1!A1:B")); ImportRange("0AozvCNI02VmpdG9MNkhIWk8xVWJ0XzVsLVN0aHdVUlE","Sheet2!A2:B")); "select * where Col1 is not null")

그래서 와 역시 구글 스프레드시트는 막강하구나 감탄을 하였습니다.

그런데 아래와 같이 #NAME? 라고 나옵니다.

VMERGE 함수가 없답니다.

관련해서 검색을 해봤습니다.

VMerge is a script installable from the script gallery of Google Spreadsheets. The =VMERGE() custom function provided by the library allows the vertical merging of ranges, arrays or data returned by other functions.

스크립트 갤러리에서 설치해서 써야 한다고?

스크립트 갤러리는 없어졌자나?!!

부가기능 설치 및 사용하기(영어로만 제공)

Google 문서, 스프레드시트, 프레젠테이션, 설문지에서 부가기능을 사용해 더 많은 작업을 할 수 있습니다. 문서, 스프레드시트, 프레젠테이션, 설문지 부가기능 스토어에서 어떤 부가기능을 사용할 수 있는지 확인하세요.

중요: Google 편집기 부가기능이 Chrome 웹 스토어에서 Google Workspace 마켓플레이스로 이전됩니다. 다음 사항을 참고하세요.

부가기능이 Google Workspace 마켓플레이스로 이전되지 않은 경우 설치할 수 없습니다.

이미 부가기능을 설치했으나 Google Workspace 마켓플레이스로 이전되지 않은 경우 계속 사용할 수는 있지만 부가기능을 제거하면 Google Workspace 마켓플레이스에서 다시 설치할 수 없습니다.

다른 사용자와 함께 문서에서 작업 중이며 Google Workspace 마켓플레이스로 이전되지 않은 부가기능을 사용 설정한 경우, 이전에 해당 부가기능을 설치한 사용자만 이를 사용할 수 있습니다.

이전에 설치한 부가기능 중 일부를 Google 문서, 스프레드시트, 프레젠테이션, 설문지에 다시 설치해야 할 수 있습니다. 부가기능 설치 방법 알아보기

개발자라면 부가기능을 Google Workspace 마켓플레이스로 이전하는 방법에 관해 알아보세요.

그럼 그전에 설치한 사용자만 사용이 가능하다는 소리? 허걱!!

그래서 해당 함수를 검색해 봤습니다.

// Version 2.11 (Current version!)
function VMerge() { //Vertical Merge 2.11 - ahab facit 2010 
  var maxw=l=0;
  var minw=Number.MAX_VALUE;
  var al=arguments.length ;
  for( i=0 ; i<al ; i++){
    if( arguments[i].constructor == Array )l =arguments[i][0].length ;
    else if (arguments[i].length!=0) l = 1 ;  /* literal values count as array with a width of one cell, empty cells are ignored! */
    maxw=l>maxw?l:maxw;
    minw=l<minw?l:minw;
  }
  if( maxw==minw) { /* when largest width equals smallest width all are equal */
    var s = new Array();
    for( i=0 ; i<al ; i++){
      if( arguments[i].constructor == Array ) s = s.concat( arguments[i].slice() )
      else if (arguments[i].length!=0) s = s.concat( [[arguments[i]]] )  
    }
  if ( s.length == 0 ) return null 
   else return s    
  }
  else return "#N/A: All data ranges must be of equal width!"      
}

출처 :: docs.google.com

역시 날고 기는 형님 선구자분들이 계시는군요

필요한 스크립트는 검색 실력만 있으면 프로그램 실력이 없어도 될 정도입니다.

이런 스크립트를 사용하길 꺼려 하신다면 아래 수식으로 하셔도 무방합니다.

=Query(
	sort(
		arrayformula(
			{
				ImportRange("1-zBxMIQKtCjCnwxBRnmw7WArGNuN-E2RVkHkGNbmL0E","시트1!A1:B");
				ImportRange("1-zBxMIQKtCjCnwxBRnmw7WArGNuN-E2RVkHkGNbmL0E","시트2!A2:B")
			}
		),0,True
	), 
	"select * where Col1 is not null"
)

결론

구글 스프레드시트에서 제공하는 함수만으로도 웬만한 기능은 다 구현이 가능하다.

반응형


댓글