2017년의 마지막을 구글 시트와 함께 하고 있는 @youngbinlee 빈누입니다.
구글시트 강좌1 IMPORTHTML로 한방에 하는 웹페이지 크롤링
구글시트 강좌2 CONCATENATE 함수로 원하는 웹페이지 주소 만들기
구글시트 강좌3 VLOOKUP 함수와 드롭다운으로 선택메뉴 만들기
과거 강좌를 차례대로 진행하시는 것이 좋습니다.
구글 시트란?
구글 시트는 구글에서 제공하는 스프레드시트 프로그램입니다. 마이크로 소프트 엑셀과 거의 동일하지만, 클라우드 상에 파일이 존재하여, 여러 기기에서 접근하거나, 여러 사람이 동시에 수정을 하는 등 엑셀보다 편리한 점이 많이 있습니다.
기존의 엑셀 함수는 대부분 사용이 가능하고, 구글 시트에서만 작동하는 유용한 함수들도 많이 있습니다. 구글 시트를 익혀서 여러분의 생산성을 올려보세요! :) 구글 드라이브 바로가기
오늘의 함수 SPLIT과 JOIN
오늘 소개해드릴 이 두 함수는 엑셀에는 없는 함수입니다. 영어 단어의 뜻과 비슷하게 데이터를 '나누거나(split)' '합치는(join)' 함수입니다.
엑셀에서는 데이터 도구 리본 메뉴에 있는 '텍스트 나누기'라는 비슷한 기능이 있습니다. 하지만 개인적으로는 구글 스트레드시트에서 처럼 함수로 되어있는 것이 여러모로 데이터를 가공할때 편리하다고 느껴집니다.
엑셀에서 데이터 나누기 기능 - 많이들 써보셨지요?
함수 사용법
SPLIT(텍스트, 구분자, [각 문자에서 분할])
- 텍스트 - 나눌 텍스트입니다.
- 구분자 - 텍스트를 분할하기 위해 사용할 문자입니다..
- 각 문자에서 분할 - [선택사항 - 기본값은 TRUE] - 구분자에 포함된 각 문자에서 텍스트를 나눌지 여부.
- 기본적으로 구분자 안의 각 문자는 별도로 간주됩니다. 예를 들어, 구분자가 "the"이면 텍스트는 "t", "h", "e"와 같이 각 문자에 나뉘어 적용됩니다. 이 기능을 사용하지 않으려면 FALSE로 설정.
위에 예에서 보듯이 데이터를 어떤 특정한 값을 기준으로 나눌 수 있는 아주 유용한 함수가 split 함수입니다.
JOIN(구분자, 값 또는 배열1, [값 또는 배열2, ...])
- 구분자 - 각각의 연결된 값 사이에 놓일 문자 또는 문자열입니다.
- 값 또는 배열1 - 구분자를 사용하여 추가될 값입니다.
join 함수는 그와는 정 반대로 특정한 텍스트를 가운데 두고, 여러개의 데이터를 하나로 합칠 수 있습니다. 전에 나왔던 concatenate 함수와 비슷합니다만, 데이터 사이에 무언가를 포함시킬 수 있다는 부분과, 3개 이상의 여러개의 데이터도 범위로 쉽게 합칠 수 있다는 점이 특징입니다.
활용예
이런 문서를 보고 있다고 해볼까요? 여기에서 중간에 보이는 통화에 대한 심볼을 목록으로 가져오고 싶다고 해봅시다. 아마 그대로 두줄을 복사+붙여넣기 한 뒤 여러차례 데이터 가공 작업을 거쳐야 할텐데요. 구글 스프레드시트에서는 오늘 소개해드린 함수를 이용해 간단하게 만들수가 있습니다.
(string) convert - return price, 24h volume, and market cap in terms of another currency. Valid values are:
"AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR"
아마 여기까지 잘 따라오신 분들이라면 아마도 아래와 같이 함수를 쓰면 되겠다고 생각하시겠죠? (텍스트는 A1셀에 복사했다고 가정)
=split(A1,"", "",false)
심볼들 사이에 있는 ", " 부분을 중심으로 데이터를 나누면 되겠다!
이런 결론을 내리셨으면 훌륭한 결론입니다만, 안타깝게도 작동하지 않습니다. 딱 보기에도 조금 이상하시죠? 보통 키워드를 넣을때 "(쌍따옴표)를 이용하기 때문에, 위와 같이 함수에 쌍따옴표를 여러번 겹쳐 사용하면, 스트레드시트 입장에서는 이것을 잘못된 함수라고 인식합니다.
결국 쌍따옴표를 의미할 수 있는 다른 부호가 필요한데요. 아스키코드라는 것을 이용해 문자를 함수처럼 변환할 수 있는 CHAR() 함수를 이용합니다. 여기서는 다른건 다 기억하실 필요 없고, 쌍따옴표의 아스키코드가 34번이므로 =CHAR(34) 이라는 함수를 사용하면 쌍따옴표가 출력된다는 사실만 기억하시면 됩니다. :)
여유가 있으신 분들은 아스키코드 참조 링크를 보시고 숫자를 바꿔가면서 어떻게 나오는지 보셔도 좋겠죠? 제가 유일하게 써본 적이 있는 것은 9번(탭)과 13번(엔터) 정도입니다.
그럼 다시 한번 split 함수로 돌아가볼까요?
=split(A1,"", "",false)
이 아이를 이제 char(34)를 이용해서 바꿔줍시다.
=split(A1,char(34)&", "&char(34),false)
이제 끝!
맨 앞뒤의 쌍따옴표는 남긴 했지만; 이정도는 수동으로 작업하는 것으로. ㅎㅎ
활용예 두번째
이번에는 join함수를 연습해볼까요?
이번에는 반대의 경우라고 해봅니다. 목록으로 된 데이터가 있는데 이것을 콤마(,) 등으로 묶어서 출력이 필요한 경우가 있을 수 있습니다.
join 함수를 잘 활용하시면 데이터가 많은 경우에도 손쉽게 추출해 원하는 텍스트를 만들어낼 수 있습니다.
엑셀보다 좋은 점
split과 join 함수 말고도 엑셀에서는 별도의 기능으로 구현되어있는 것이 구글 시트에서는 함수로 구현되어있는 것들이 많습니다.
특히 데이터를 가공해서 써야할때 이런 함수들이 빛을 발하는데요. 예를 들어 엑셀의 데이터 나누기 기능을 쓰고 나면 원본 데이터는 사라지고, 나눠진 데이터만 남게 됩니다. 나중에 원본 데이터를 참조하고 싶어도 따로 저장해두지 않는 이상 할 수가 없게 되죠.
하지만 구글 시트처럼 함수를 이용해서 데이터 가공을 하는 경우에는 원본이 언제나 그 자리에 남아 있기 때문에 향후 참조가 용이하다는 점, 그리고 여러개의 함수를 중첩해서 사용해서 좀 더 복잡한 수준의 데이터 가공이 쉽다는 점이 큰 장점이라고 할 수 있습니다.
숙제
행사 참석자 명단을 받았다고 해볼까요?
Tyler Bachtel
Penn Badgley
Simon Baker
Christian Bale
Eric Bana
Alex Band
Antonio Banderas
Ike Barinholtz
Ben Barnes
Eugen Bauder
William Beckett
Tyson Beckford
David Beckham
Jason Behr
Jonathan Bennett
Sam Bennett
Dierks Bentley
Gael Bernal
Jon Bernthal
Wilson Bethel
Justin Bieber
David Blaine
행사 뒤에 홈페이지 등에 "Bactel, Badgley, Baker....님 참석을 감사드립니다"와 같은 메세지를 올려야 된다고 가정하고 split과 join 함수를 이용해 메세지를 만들어 보세요. 두번째인 성을 사용하시면 됩니다.
char(34)를 사용하면 ""를 표시할 수 있군요.
이렇게 만들어 보았습니다. 사람 입력은 3명만.
그냥 JOIN에 여러 인자를 넣으니 사람 성 앞 뒤에 ,가 생겨서 concatenate라는 함수를 사용하여 묶었습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
처음엔 char(34)누구누구님 블라블라char(34) 이렇게 나왔는데 수정해서 성공했습니다!ㅎㅎㅎ
항상 좋은 강의 감사드립니다^ㅂ^~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
알려주신 기술 총동원해 만들어봅니다.
학원 강사하셔도 충분히 대박나실듯!! ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
네 번째 숙제 했습니다. : )
숙제4
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
좋은 정보 감사드립니다.~~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit