컴퓨터/엑셀 2008. 12. 11. 09:57

[엑셀] 문자열을 자유 자재로 : concatenate

concatenate는 문자열을 만들어주는 함수 입니다.

인자는 text로 변환 가능한 인자를 받습니다. text , 숫자 등이 되겠지요.

실제로 엑셀 도움말에 있는 예제를 보겠습니다.

 

 

도움말을 복사한것은 절대 예제를 만들기가 귀찮아서는 아닙니다. ㅎㅎㅎ

이해가 되시는 지요? 설명 란에 "송어의 개체 밀도는 32/킬로미터입니다." 가 결과값입니다.

아 숫자나 문자등을 가지고 하나의 문장을 만들어주는 구나...........

 

근데? 그게 뭐? -_-:;;;; 도데체 어디에 써 먹을 수 있을까요?

잠시 삼천포로 빠지면 제가 이 엑셀 강의를 시작하려고 마음 먹은 계기가 있습니다. 이거 하나만 잘 써도 엑셀로 정말 많은 일을 할 수 있겠다. 그리고 바로 이 정말 아무짝에도 쓸모없을 꺼 같은 concatenate함수가 바로 그 초석이 됩니다. ㅎㅎㅎ 자 이 얘기는 차근 차근 강의를 진행하다보면... 나오겠지요.

그럼 그때까진 이 concatenate를 써 먹지 못하냐? 여기 실제로 제가 쓰는 예제를 몇가지 보여줍니다.

전 강의에서 기념일을 계산하는 방법을 만들어서 보여드린 적이 있습니다.

너무 밋밋하다고 생각하지 않나요?

좀 장식을 더 해 보겠습니다.

 

오늘은 사귄지 608일 입니다. (예 저번 예제 작성일로부터 하루가 지났습니다.^^)

수식을 볼까요? concatenate(d1,a3,d2) 이렇게 되어 있네요. 각 셀에 문장을 미리 작성해 놓고 그것들을 이렇게 조합해서 사용합니다.

물론 이건 보여주기 위해서 이렇게 만든 것 이고 이렇게 써도 가능합니다.

=concatenate("오늘은 사귄지 ", A3, " 일 입니다.")

이렇게 수식을 쓰셔도 정확히 결과는 일치합니다.

조금 더 실용적인 예제를 들어볼까요?

제가 다니는 히사는 주간 업무 보고라는 것을 합니다. 자세한 내용은 필요없고 제목에 이렇게 적지요.

주간 업무 보고 (2007-12-01 ~ 2007-12-05)

주간 업무 보고는 매주 합니다. 매주 저 날자를 일일이 바꿔주긴 귀찮겠지요? 젤 편한 방법이 멀까요?

(날자를 안 쓰는 겁니다. -_-;;;;;)

ㅎㅎㅎㅎ

근데 날자를 안 쓰면 나중에 검색할때도 불편하고 팀장님이 화내요~~ ㅎㅎㅎ

그래서 전 이렇게 합니다.

=concatenate("주간 업무 보고 (", d6 " ~ " , 36, ")")

이해가 되시나요? 네 d6과 e6에 날자가 들어가는 거지요. 물론 그 날자는 자동으로 계산되어야 합니다.

지난 강의에서 날자 계산 하는 법, 오늘 날자 계산하는 법등을 배웠지요. 활용해보겠습니다.

.....

 

...

.

.

.

.

.

활용해 보시라구요!!! ㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅎㅎ

 

어렵지 않습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

힌트는 now() 입니다.

 

으학 이게 무슨 일 입니까? -_-???

저 알수 없는 숫자는 무엇일까요?

팀장님한테 더 혼나게 생겼네요. 어떻게 해야 할까요?

D6과 E6을 먼저 보겠습니다.

D6에는 NOW 함수를 써서 오늘 날자를 표시했습니다.

 

그럼 이번주의 월요일인 E6은 어떻게 계산했을까요?

어려운 방법이 있습니다. 날자 관련 함수들중에 주어진 날자의 주의 월요일을 계산해주는 함수도 있지요...

무슨 요일인지를 계산해주는 함수도 있습니다.

그런 저런 함수들을 써보고 싶지만 그렇게 하자면 너무 복잡해지고 어려워지니... 간단히 하겠습니다.

서두에 주간업무보고는 매주 금요일에 한다고 했습니다.

그럼?

 

그렇지요 월요일은 금요일보다 4일전입니다.

간단하지요? 그럼 이제 저기 나오는 시간이나 숫자가 문제네요 어떻게 해야 할까요?

 

도데체 어떻게 하면 이렇게 시간이 없고 날자값만 나오게 할 수 있을까요?

여기서 사용되는 함수는 TEXT라는 함수 입니다. 주어진 숫자를 일정한 양식에 맞춰 변환시켜주는 함수입니다.

text함수는 자세히 설명하기엔 좀 복잡하므로 궁금하신 분은 직접 도움말을 한번 보시기 바랍니다. 본 예제에서는 다음과 같이 활용하였습니다.

 

첫번째 인자를 두번째 인자(서식이라고 함)에 맞추어 변환시켜주는 것이죠. "yyyy-mm-dd"는 "년-월-일"의 형식으로 표현하라는 서식입니다.

간단한 함수인데 설명이 걸어졌네요.

이 concatenate함수가 응용될 다른 분야는 DM발송에서도 활용될 수 있습니다.

주어진 고객데이타가 있고 데이타에는 주소/이름등이 적혀 있으며 이 데이타를 기초로 발송지 주소를 뽑고 싶을때 응용할 수 도 있겠지요.

이에 관해서는 다음에 기회가 되면 다시 써 보겠습니다.

-마음가는 길은 곧은 길-

PS : 명일부터 휴가인 관계로 다음강좌는 수요일에나 올라올듯 합니다. 못간 여름 휴가입니다. ㅎㅎㅎ

컴퓨터/엑셀 2008. 12. 10. 10:05

[엑셀] 기념일 계산하기

지금까지 상대좌표니 절대좌표니 하는 이상한 강의를 하느라 머리가 많이 아팠죠?

쉬어가는 페이지라는 생각으로 기념일 계산하기를 만들어 보겠습니다.

기념일 계산에는 두가지가 있을 수 있겠네요.

  • 특정일로부터 오늘이 며칠이나 지났는지.
  • 특정일이 오늘로부터 며칠이나 남았는지.

오늘 같이 보게될 함수는 NOW() / Value() 등의 함수입니다.

먼저 알아도 그만 몰라도 그만인 컴퓨터의 날자 체계입니다.
관심없으신 분은 다음으로 넘어가도 좋습니다.

컴퓨터에서 2008년 6월 8일을 어떻게 저장할까요? (투루노와 라라루의 결혼기념일입니다. ^^*) 20080608 이렇게 저장할까요? 아닙니다. 이럴 경우 윤년이니 뭐니 해서 날자값이 정확하지 않을 수 있어서 컴퓨터는 특정일로부터 더하기 날자값으로 저장합니다. (이렇게 하는게 저장공간도 적게 차지하구요. 2008년 06월 08일 은 엑셀에서는 39607 이라는 값으로 저장됩니다. 무슨 값일까요? 바로 1900년 1월 1일을 기준으로 39607일이 지났다는 것이지요.

어렵죠? ㅎㅎ 몰라도 됩니다. 중요한건 날자가 년/월/일 이런식으로 저장되는게 아니라 숫자 라는거죠. (윤년 문제는 해당 숫자를 날자형식으로 바꿀떼 자동으로 계산된답니다.)

그럼 2007년 4월 7일(투루노와 라라루가 사귀기 시작한 날입니다. ^^*) 은 얼마인지 알아볼까요?

엑셀을 열고 2007/04/07 이라고 A1의 셀에 칩니다. (뭐 굳이 이날자가 죽어도 싫다 하시면 다른 날자를 치셔도 무방합니다. ^^*)

수식 보기 창에서도 2007-04-07 이라고 보이네요? 그럼 어떻게 해야 더하기 날자 값을 알 수 있을까요?

Value라는 함수 입니다. 앞으로 함수가 나오면 필요하지 않으면 간단히 설명만 하고 지나갑니다. 잘 모르시겠으면 셀에다가 해당 함수를 입력하고 [F1]을 누르면 함수에대한 설명이 나옵니다.

value 함수는 인자값으로 "TEXT"를 받아서 변화이 가능하다면 숫자로 변환해줍니다.

그럼 제가 아까 날자는 문자열이 아니라 더하기 숫자라고 했습니다. 그렇다는 말은 숫자로 변환이 가능하다라는 말이겠군요.

B1에다가 다음과 같은 수식을 써 보겠습니다.

=Value(A1)

 

아핫, 이상한 값이 나왔습니다. 39179

무슨 뜻일까요? 2007년 4월 7일은 1900년 1월 1일부터 39179일이 지난 날이라는 뜻입니다.

그럼 2008년 6월 8일을 다시 계산해볼까요?

 

39607 입니다.

자 이제 이걸 가지고 무엇을 할 수 있을까요?

39607 ,39179 두개의 숫자입니다. 두개의 숫자로는 더하기 곱하기 나누기 등을 할 수 있습니다.

그리고 빼기가 되겠죠? 39607 - 39179 를 하면 ? 얼마일까요?

옆에 있는 계산기 찾으시는 분, 열심히 암산 하시는 분... 엑셀은 가장 뛰어난 계산기 입니다.

B3에다가 "B2-B1" 을 넣어보게습니다.

 

428 이네요.

바로 사귄지 428일 만에 투루노와 라라루는 결혼을 한 것입니다.

ㅎㅎ

 

이해를 돕기 위해서 value 함수를 썼는데 위의 그림처럼 두개의 날자로부터 직접 계산을 하여도 답은 나옵니다.

이제 날자 계산하는 건 대충 아시겠지요?

그럼 원래 주제인 기념일이 며칠 남았는지 아니면 오늘이 며칠째인지는 어떻게 알 수 있을까요?

수많은 남자들이 괴로워 하는 일중에 하나가 기념일 챙기기죠? ㅎㅎ 여기 해답이 있습니다.

자 그럼 위의 예제를 바꾸어 보겠습니다. 투루노랑 라라루가 사귄지 오늘로 부터 며칠이 되었을까요?

(참고로 본 문서는 2008년 12월 4일에 작성합니다)

어떻게 하면 계산할 수 있을까요?

 

숙제낼까요? ㅋㅋ

 

 

 

 

 

조금만 더 생각해주세요..

 

 

 

 

 

 

요새는 고 해상도 모니터가 많아서. ㅋㅋ

 

 

 

 

 

 

 

 

ㅎㅎㅎ 생각해보셨나요?

 

 

A2에다가 2008/12/04(오늘 날자)를 넣으시면 됩니다. ㅎㅎ 너무 쉽죠?

 

607일이네요.. ㅎㅎ 딱 일주일전에 600일 파티가 있었습니다. ^^*

ㅎㅎㅎㅎ(염장이냐구요? 아니요 강의 입니다. 강의. ㅎㅎㅎ)

 

그럼 매번 이렇게 오늘 날자로 바꾸어줘야 하는가요? 그렇게 할꺼면 투루노 처럼 게으른 사람은 안합니다. -_-; -_-;;

NOW() 라는 함수는 오늘 날자와 시간을 알려주는 함수입니다.

A2셀에 =NOW()라고 입력해보십시오

 

위에 보이는 화면은 엑셀 설정에 따라 조금은 다르게 보일 수 있습니다. A2에 날자만이 아니라 시간까지 표시 되는 경우도 있구요. 그렇지만 중요한건 시간이 아니라 날자지요

며칠이나 지났는지 결과값을 보려 했더니? 아니 이게 왠일.........

 

607.918... 하고 소수점이 나왔네요. 흑. 무슨 소리인지 607일이 맞긴 한거 같은데????

여기서 또 몰라도 되는 상식이 하나 나옵니다. 아까 컴퓨터가 날자는 더하기 날자로 표시한다고 했지요? 그런데 시간도 더하기 시간을 씁니다. 0시를 기준으로 24시까지를 일정한 값으로 나누고 매 순간 그 값이 더 해져 가는 것이죠 그리고 그 값을 아까 더하기날자.더하기시간 으로 기록하게 됩니다.

즉, 정수 부분은 날자 소수 부분은 시간 정보를 기록하게 됩니다.

그리고 NOW라는 함수는 단순히 오늘 날자만 알려주는 것이 아니라 현재시간까지 표시해주는 것이기 때문에 위와 같은 결과가 나오는 것이지요.

그럼 어떻게 하면 될까요? 젤 쉬운 방법은????

그냥 소수는 빼고 읽으시면 돼죠. ㅎㅎ 귀찮잖아요^^*

더 좋은 방법은 C3의 수식에 =rounddown(A2-A1,0) 이라고 입력하시면 됩니다. rounddown 함수는 버림이라는 함수로 위의 수식으로 하면 소수점 이하는 버려집니다. (흑흑..)

직접 한번 해보십시오. ^^*

 

-마음가는 길은 곧은 길-