2007부터인가 엑셀은 기본값으로 다중 실행이 안 되게 바뀐 듯하다. 그래서 다중 창을 원하는 사람들이 많은 글을 올렸던데... 레지스트리 수정 혹은 애드온 설치 말고 아주 간단한 방법이 있다.


윈도우키+R → excel → 엔터


이렇게 엑셀을 실행하면 그때그때 모두 각각의 창으로 뜬다. 나는 이렇게 엑셀을 실행한 후 알트+F → R → 숫자를 눌러 자주 사용하는 문서를 여는 식으로 사용하고 있다(마우스를 적게 쓰는 게 생산성이 높다). 엑셀을 여러 개 실행한 다음 탐색기의 파일을 원하는 창에 드래그앤드롭하는 사용 패턴도 가능하겠다.


흔히 알려진 방법대로 레지스트리를 수정하면 탐색기에서 엑셀 파일을 열 때마다 새로운 엑셀이 실행되게 할 수는 있다. 그러나 이렇게 엑셀 프로세스가 여러 개 실행되면 실행될수록 PC의 자원 소모 또한 증가한다. 사양이 빵빵한 시대이긴 하지만, 그럼에도 나는 모든 파일이 아니라 원하는 파일만 새로운 엑셀 창으로 여는 방법을 선호한다.


그럼 탐색기에서 특정 파일에 대해서만 새 엑셀을 실행하는 방법은 없을까? '보내기' 메뉴를 이용하는 방법이 떠오른다.


  1. 탐색기에서 엑셀 설치된 폴더로 간다. 2010의 경우 보통 C:\Program Files\Microsoft Office\Office14
  2. EXCEL.EXE 파일을 우클릭해서 폴더 안 빈 공간에 끌어다가 놓고 '여기에 바로 가기 만들기' 선택.
  3. 그럼 'EXCEL.EXE - 바로 가기' 이런 파일이 생겼을 거다. 이 파일을 컨트롤+X.
  4. 알트+D 누른 다음 주소창에 shell:sendto 엔터(혹은 윈도우키+R 누르고 shell:sendto 엔터).
  5. 컨트롤+V.


이제 탐색기에서, 새로운 엑셀 창으로 열고 싶은 파일은 우클릭하여 '보내기>EXCEL.EXE - 바로 가기'로 열면 된다.




Posted by 필유
먼저 숫자를 음차로 표기한다는 말은 125,000과 같은 숫자를 일십이만오천과 같이 한글로 표기한다는 뜻이다. 청구서 등 공문서에서 금액을 표기할 때는 이런 식으로 숫자에 한글을 부기하는 것이 원칙?인 듯하다(금 일십이만오천원정(\125,000)과 같이). 이를 사람이 쓸 필요 없이 엑셀에서 셀 서식 또는 numberstring 함수를 이용해 쉽게 표기할 수 있다(하지만, 어제까지 나는 손으로 쓰고 있었다 OTL). 이런 문서 등을 참고.

그런데 오픈오피스 캘크 셀 서식에 들어가면 위 문서에 나온 것과 같은 서식 코드(엑셀에서는 '형식')가 보이지 않는다. 그래서 찾아본 결과 이런 방법이 있었다. numberstring 함수를 대신할 함수는 존재하지 않지만, 엑셀과 동일하게 셀 서식을 지정할 수 있었다. 아쉽지만, 수동으로...-_-

바로 회사 지출결의서에 적용-_-v

바로 회사 지출결의서에 적용-_-v


왜 이런 편리한 기능(서식 코드)을 기본 설치에 포함시키지 않았을까. "공짠데 뭘 바라세요"라고 하면 그만인 얘기지만, 이런 사소한 부분에 좀 더 신경을 쓴다면 더 많은 사람들이 더 쉽게 사용할 수 있을 텐데 말이다.



Posted by 필유
요즘도 간간히 엑셀 관련 유입 키워드가 있는데... 오늘자 '엑셀' 관련 유입키워드 중 상위 키워드를 몇 뽑아봤다.

순위 개수 키워드명
12 8 엑셀 단위
17 3 엑셀 1000단위
17 3 엑셀에서중복
17 3 엑셀 중복 제외 개수
18 2 엑셀 숫자 단위
18 2 엑셀단위
18 2 엑셀 중복제외 개수
19 1 엑셀에서 500이하는 500으로 표시 500 이상은 천으로 표시
19 1 엑셀 백단위 반올림
19 1 엑셀 천단위 반올림

중복을 제외한 개수 세는 방법은 이미 이 카테고리에 포스팅한 적이 있으니 생략. 뭔가 알 수 없는 '500이하는 500으로 표시 500 이상은 천으로 표시'라는 검색어가 있는데... 이게 조금 흥미롭기도 해서 포스팅한다. 간단히 말해 다음과 같이 하면 된다. 엑셀 2007 기준.

셀 서식만으로 해결

셀 서식만으로 해결


위 시트의 B열처럼 셀 서식의 표시 형식만 바꿔도 500 이하일 경우는 무조건 500을 나오게 하고 500 초과일 때는 무조건 1000이 나오게 할 수 있다. 구체적으로는 다음 스샷처럼.

셀 서식>표시 형식

셀 서식>표시 형식


물론 이런 식으로 표시해야 할 일이 있을지는 별개의 문제다-_- 별로 쓸 일이 없을 듯한데-_- 이것보다는 500단위에서 반올림을 하는 게 더 일반적이지 않을까 싶어 만든 게 C열이다. C열은 mround 함수를 사용해 500단위, 정확히 말해 500의 배수에서 반올림을 한다. =MROUND(A2,500)와 같이 다른 함수처럼 간단하게 사용하면 된다. 여기서 500을 100으로 바꾼 게 D열. 단, mround 함수는 엑셀 2003까지는 기본설치시 포함되지 않고 '분석 도구' 추가기능을 설치해야 사용할 수 있다. 2007 버전부터 내장함수로 편입되어 그냥 사용가능하다.

오픈오피스 캘크는 수식에서 쉼표(,) 대신 세미콜론(;)을 사용한다

오픈오피스 캘크는 수식에서 쉼표(,) 대신 세미콜론(;)을 사용한다


이상 설명한 모든 방법은 오픈오피스 캘크(calc)에서도 그대로 사용가능하다. 셀 서식은 한 글자도 바꾸지 않고 엑셀과 똑같이 사용하면 되고, mround 함수도 기본적으로 지원된다. 다만 캘크에서 수식을 작성할 때는 엑셀의 ,(쉼표) 대신 ;(세미콜론)을 사용한다는 점만 잊지 말자. 여담이지만 회사 사장이 M$ 오피스를 구매하지 않고 오픈오피스를 사용하기로 결정해서 다른 직원들은 전부 불만 만땅인 상황에 나 혼자 흐뭇해 하는 중이다-_-

끝으로 본문에서 사용한 엑셀 파일과 캘크 파일을 첨부한다.

unit.xls

엑셀 97~2003 파일

unit_odf.ods

오픈오피스 파일




Posted by 필유

아래와 같은 자료가 있다고 합시다. '품명'이 A1이라고 치죠. 이때 중복되지 않는 '종류'가 몇 개인지 궁금하다면? 즉, 중복 레코드를 카운트하지 않고 고유한(unique) 개수를 알고 싶다면?

품명 종류 가격 원산지
캐맛있는배 10000 서울시구석탱이
둘이먹다하나죽는사과 사과 5000 경기도사과동
저를먹어주세요 바나나 7000 아프리카울랄라시
맛있는바나나 바나나 6000 제주도제주시
정말맛있는딸기 딸기 5000 전남광양
자이로딸기 딸기 6000 미국NY
니뽄삘딸기 딸기 4000 일본서귀포
캔으로먹는사과 사과 19000 캐나다
악마같은사과 사과 9000 독일브레멘
혼자만드센 딸기 8000 독일브뤼셀

뭐 항목(레코드 또는 행)이 적다면 육안으로도 가능하겠지만; 만약 항목이 천개가 넘어간다면? 게다가 앞으로도 항목은 추가될 가능성이 언제라도 있고 그때마다 필터 따위의 수작업 없이 중복되지 않는 종류를 세고 싶다면?

여러 방법이 가능합니다.

위에서도 말했지만 고급필터를 이용하는 방법이나 피벗 테이블을 이용하는 방법도 있습니다만, 수작업이 필요한 방법은 제외하도록 하죠. 가라(-_-)로 엑셀을 사용하는 프로그래머(바로 저 같은;)라면 VBA를 떠올릴 겁니다. 하지만 VBA도 제외하도록 하죠.

내장함수만으로 이 문제를 해결하는 방법이 있습니다. 하지만 배열수식을 이용해야 합니다. 이것만은 피할 수 없죠. 보니까 오피스2007의 도움말에도 여러가지 방법이 소개되어 있더군요. 가장 쉬운 방법으로 frequency 함수를 이용하는 방법이 있지만 이 방법은 숫자 자료에만 사용할 수 있다는 한계가 있습니다. 물론 이를 응용한 방법들 또한 소개되고 있습니다. 도움말에서 소개하는 중복 값이 있는 범위에서 고유 값 개수 구하기를 보면 아시겠지만, 이 방법은 다소 복잡한 감이 있습니다. 원리는 간단하지만 수식이 복잡해진다는 의미에서요.

이보다 훨씬 간단한 방법이 있습니다. 한 네이버 카페에서 발견한 방법입니다. 위의 자료를 예로 든다면 만약 그냥 counta 함수를 사용한다면 중복된 '종류'를 포함하여 10이 나올 것입니다. 하지만 자료 범위 외의 아무 셀에나 =SUM(1/COUNTIF(B2:B11,B2:B11))라고 배열수식을 입력해보세요. 배열수식을 입력하기 위해서는 앞의 수식을 적고 ctrl + shift + 엔터를 쳐야 합니다. 그러면 간단하게 원하던 결과인 4가 나오죠.

사실 원리는 간단합니다. 중복되는 항목의 경우 countif 함수의 결과로 1보다 큰 값(x라고 합시다)이 나오게 되는데요, 이 x가 x개 있으므로 (1/x) * x = 1로 계산하게 만드는 방법입니다.

궁금하신 분들은 해당 셀에서 수식>수식 계산(오피스 2007 기준) 해보면 어떻게 계산이 되는지 볼 수 있습니다. 제가 아는 한 가장 간단한 방법이 아닐까 싶습니다. 필터도 피벗도 VBA도 다 필요없습니다. 얼마나 간단합니까.



Posted by 필유