• 최초 작성일: 2001-03-07
  • 최종 수정일: 2026-09-29
  • 조회수: 26 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 단어수 세기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

메일 하나

띄워주시는 강좌 정말 열심히 보고 있습니다. 그런데 오늘 강좌를 보던 중 의문이 생겨서 수정을 해 보았습니다. 일례로 김대중씨댁에서 100kWh를 사용했을 경우 기본요금이 390원이 나와야 되는 것이 아닌지요? 제 것이 맞는지 확인해 주시기 바랍니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

단어수 세기

핵심 요약

  • PROPER 함수를 사용하면 영문 문장에서 각 단어의 첫 글자를 대문자로 바꿀 수 있습니다.
  • 문장의 단어 수는 TRIM으로 불필요한 공백을 정리한 뒤 원문 길이와 공백을 제거한 문자열 길이의 차이를 이용해 계산할 수 있습니다.
  • LEN과 SUBSTITUTE를 응용하면 한 문장 안에서 특정 단어나 문자열이 몇 번 반복되는지도 대소문자 조건에 맞춰 셀 수 있습니다.

Exceller 님이 만드신 것입니다.

(표 2) 기본요금 (표 3) 전력량 요금
사용량 요금 사용량 요금
100 390 50 34.5
200 850 100 81.7
300 1500 200 122.9
400 3590 300 177.7
500 6750 400 308
501 11980 500 405.7
501 639.4

(표 4) 전력사용요금계(완성)

이름 사용량 기본요금 전력량요금 전력요금계
김동길씨 댁 87 =IF(C29<B19,C19,INDEX($C$19:$C$24,MATCH(C29,$B$19:$B$24,1))) =IF(C29<E19,F19,INDEX($F$19:$F$25,MATCH(C29,$E$19:$E$25,1))) =SUM(D29:E29)
김대중씨 댁 100 =IF(C30<B20,C20,INDEX($C$19:$C$24,MATCH(C30,$B$19:$B$24,1))) =IF(C30<E20,F20,INDEX($F$19:$F$25,MATCH(C30,$E$19:$E$25,1))) =SUM(D30:E30)
김영삼씨 댁 255 =IF(C31<B21,C21,INDEX($C$19:$C$24,MATCH(C31,$B$19:$B$24,1))) =IF(C31<E21,F21,INDEX($F$19:$F$25,MATCH(C31,$E$19:$E$25,1))) =SUM(D31:E31)
전두환씨 댁 316 =IF(C32<B22,C22,INDEX($C$19:$C$24,MATCH(C32,$B$19:$B$24,1))) =IF(C32<E22,F22,INDEX($F$19:$F$25,MATCH(C32,$E$19:$E$25,1))) =SUM(D32:E32)
노태우씨 댁 405 =IF(C33<B23,C23,INDEX($C$19:$C$24,MATCH(C33,$B$19:$B$24,1))) =IF(C33<E23,F23,INDEX($F$19:$F$25,MATCH(C33,$E$19:$E$25,1))) =SUM(D33:E33)
민중달씨 댁 580 =IF(C34<B24,C24,INDEX($C$19:$C$24,MATCH(C34,$B$19:$B$24,1))) =IF(C34<E24,F24,INDEX($F$19:$F$25,MATCH(C34,$E$19:$E$25,1))) =SUM(D34:E34)

제가 수정한 것입니다.

(표 2-1) 기본요금 (표 3-1) 전력량 요금
사용량 요금 사용량 요금
1000 11980 1000 639.4
500 6750 500 405.7
400 3590 400 308
300 1500 300 177.7
200 850 200 122.9
100 390 100 81.7
50 34.5

(표 4-1) 전력사용요금계(완성)

이름 사용량 기본요금 전력량요금 전력요금계
김동길씨 댁 87 =IF(C52<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C52,$B$42:$B$47,-1))) =IF(C52<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C52,$E$42:$E$48,-1))) =SUM(D52:E52)
김대중씨 댁 100 =IF(C53<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C53,$B$42:$B$47,-1))) =IF(C53<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C53,$E$42:$E$48,-1))) =SUM(D53:E53)
김영삼씨 댁 255 =IF(C54<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C54,$B$42:$B$47,-1))) =IF(C54<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C54,$E$42:$E$48,-1))) =SUM(D54:E54)
전두환씨 댁 300 =IF(C55<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C55,$B$42:$B$47,-1))) =IF(C55<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C55,$E$42:$E$48,-1))) =SUM(D55:E55)
노태우씨 댁 400 =IF(C56<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C56,$B$42:$B$47,-1))) =IF(C56<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C56,$E$42:$E$48,-1))) =SUM(D56:E56)
민중달씨 댁 580 =IF(C57<$B$47,$C$47,INDEX($C$42:$C$47,MATCH(C57,$B$42:$B$47,-1))) =IF(C57<$E$48,$F$48,INDEX($F$42:$F$48,MATCH(C57,$E$42:$E$48,-1))) =SUM(D57:E57)

이것은 박기표님이 보내주신 메일입니다. X0190 강좌에서 수식이 잘못되어 있다는 말에 화들짝 놀라서 찬찬히 살펴보니… 그제서야 잘못 적용된 공식이 보이더군요. 즉 위 (표 4)의 기본 요금 부분에서 전력사용량이 100kWh 미만일 경우에 대한 조건처리에서 절대주소를 적용해 주어야 하는데 그냥 상대주소를 지정한 상태에서 공식을 복사했으니 결과가 잘못 나온 것이지요.

그렇습니다. 김대중씨댁 기본요금은 390원이 나와야 맞습니다!

그런데 박기표님이 수정하신 수식에서도 약간의 오류가 보이는군요. ^^; (표 4-1)에서 붉은 색으로 표시한 부분이 잘못 계산되어져 있습니다. 김동길씨의 사용량이 87kWh이므로 전력량 요금은 (표 3)에 의하면 34.50이 되겠지요? 그리고 김영삼씨의 사용량은 255kWh이므로 기본요금과 전력량 요금은 각각 850, 122.90이 될 것입니다. 따라서 X0190 강좌에서 Exceller가 사용한 공식 중에서 상대주소로 표기된 부분을 고쳐서 아래와 같은 형태로 사용하시면 될 것 같습니다.

좋은 지적을 해 주신 박기표님께 진심으로 감사를 드립니다. 그런데 다른 분들은 스스로 알아서 수정을 하신 것인가요 아니면… ^^;

Exceller가 새로 고친 요금표

(표 1) 전력사용요금계

이름 사용량 기본요금 전력량요금 전력요금계
김동길씨 댁 87 =SUM(D85:E85)
김대중씨 댁 123 =SUM(D86:E86)
김영삼씨 댁 255 =SUM(D87:E87)
전두환씨 댁 316 =SUM(D88:E88)
노태우씨 댁 405 =SUM(D89:E89)
민중달씨 댁 580 =SUM(D90:E90)
(표 2) 기본요금 (표 3) 전력량 요금
사용량 요금 사용량 요금
100 390 50 34.5
200 850 100 81.7
300 1500 200 122.9
400 3590 300 177.7
500 6750 400 308
501 11980 500 405.7
501 639.4

(표 4) 전력사용요금계(완성)

이름 사용량 기본요금 전력량요금 전력요금계
김동길씨 댁 87 =IF(C106<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C106,$B$95:$B$100,1))) =IF(C106<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C106,$E$95:$E$101,1))) =SUM(D106:E106)
김대중씨 댁 100 =IF(C107<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C107,$B$95:$B$100,1))) =IF(C107<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C107,$E$95:$E$101,1))) =SUM(D107:E107)
김영삼씨 댁 255 =IF(C108<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C108,$B$95:$B$100,1))) =IF(C108<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C108,$E$95:$E$101,1))) =SUM(D108:E108)
전두환씨 댁 316 =IF(C109<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C109,$B$95:$B$100,1))) =IF(C109<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C109,$E$95:$E$101,1))) =SUM(D109:E109)
노태우씨 댁 405 =IF(C110<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C110,$B$95:$B$100,1))) =IF(C110<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C110,$E$95:$E$101,1))) =SUM(D110:E110)
민중달씨 댁 580 =IF(C111<$B$95,$C$95,INDEX($C$95:$C$100,MATCH(C111,$B$95:$B$100,1))) =IF(C111<$E$95,$F$95,INDEX($F$95:$F$101,MATCH(C111,$E$95:$E$101,1))) =SUM(D111:E111)

본론으로 들어가서…

microsoft EXCEL has been called the best application ever written for windows. 이런 문장이 있다고 가정을 합니다. 이것을 아래와 같이,

Microsoft Excel Has Been Called The Best Application Ever Written For Windows.

즉, 매 단어의 첫글자를 대문자로 바꾸어 주고 싶다면 어떻게 하면 될까요? 이런 경우에는 Proper라는 함수를 사용하면 됩니다. 즉, =proper(b10) 이렇게 하면 위와 같은 형태로 자동으로 고쳐 집니다.

그러면 한 문장에 몇 개의 단어가 있는지 알고 싶을 때에는 어떻게 할까요? 단어라는 것은 스페이스(공란)에 의해 구분이 되지요? 아래의 예제를 보세요.

이 문장은 몇 단어? =LEN(TRIM(B129))-LEN(SUBSTITUTE(TRIM(B129),CHAR(32),""))+1&" 단어입니다"
1 2 3 4 5 6 7 8 9 =LEN(TRIM(B130))-LEN(SUBSTITUTE(TRIM(B130),CHAR(32),""))+1&" 단어입니다"
EXCEL =LEN(TRIM(B131))-LEN(SUBSTITUTE(TRIM(B131),CHAR(32),""))+1&" 단어입니다"
V B A =LEN(TRIM(B132))-LEN(SUBSTITUTE(TRIM(B132),CHAR(32),""))+1&" 단어입니다"
=B131&" & "&B132 =LEN(TRIM(B133))-LEN(SUBSTITUTE(TRIM(B133),CHAR(32),""))+1&" 단어입니다"
Good Morning =LEN(TRIM(B134))-LEN(SUBSTITUTE(TRIM(B134),CHAR(32),""))+1&" 단어입니다"

이처럼 단어 수를 카운팅하기 위해서는 함수를 사용하면 되는데 특별히 정해진 함수가 있는 것은 아니고 여러가지 문자열 함수들을 조합해 주어야 합니다. 위의 D20 셀에는 아래와 같은 수식이 들어 있습니다.

=LEN(TRIM(B20))-LEN(SUBSTITUTE(TRIM(B20),CHAR(32),""))+1 & " 단어입니다"

이정도 수식쯤은 이제 눈 감고도 해석이 되시겠지요?(눈 뜨고도 안되신다구요? ^^) 아주아주 오래 전에 문장 내에서 특정 문자열이 몇 개가 있는 지 카운팅하는 방법에 대해 설명드린 적이 있는데 그것과 같은 이치입니다.

단어(Word)란 것이 공백에 의해 구분되는 것이니까 공백을 ""으로 치환한 다음, 원래 문자열 수에서 빼버리면 그 차이만큼이 바로 단어(Word) 수 이겠지요? 이 점에 착안한 것입니다.

이것을 좀더 응용해 보면…

I can can a can can =SUM(LEN(B154)-LEN(SUBSTITUTE(B154,E154,"")))/LEN(E154)
Man to Man man =SUM(LEN(B155)-LEN(SUBSTITUTE(B155,E155,"")))/LEN(E155)
EXCEL is excellernt software EXCEL =SUM(LEN(B156)-LEN(SUBSTITUTE(B156,E156,"")))/LEN(E156)
EXCEL is excellernt software eXcEl =SUM(LEN(B157)-LEN(SUBSTITUTE(UPPER(B157),UPPER(E157),"")))/LEN(E157)
=SUM(LEN(B48)-LEN(SUBSTITUTE(UPPER(B48),UPPER(E48),"")))/LEN(E48)

이와 같이 한 문장 내에서 특정한 단어가 몇 번 반복이 되었는지도 간단하게 파악할 수 있을 것입니다.

오늘은 여기까지…

정리 — 단어수 세기

구분내용
단어 첫 글자 대문자=PROPER(B10)
단어 수=LEN(TRIM(B20))-LEN(SUBSTITUTE(TRIM(B20),CHAR(32),""))+1
원리공백을 없앤 문자열과 원래 문자열의 길이 차이가 공백 수이므로 여기에 1을 더함
특정 단어 횟수=SUM(LEN(B48)-LEN(SUBSTITUTE(UPPER(B48),UPPER(E48),"")))/LEN(E48)
X0190 정정기본요금 수식에서 상대주소로 잘못 지정한 부분을 절대주소로 수정

자주 묻는 질문 (FAQ)

Q1. 각 단어의 첫 글자를 대문자로 바꾸려면 어떻게 하나요?

PROPER 함수를 사용하면 됩니다. 문장을 담은 셀을 인수로 지정하면 모든 단어의 첫 글자가 대문자로 자동으로 고쳐집니다.

Q2. 한 문장에 단어가 몇 개인지 어떻게 세나요?

단어는 공백으로 구분되므로 TRIM으로 공백을 정리한 문자열의 길이에서, 공백을 제거한 문자열의 길이를 뺀 뒤 1을 더합니다.

Q3. 문장 안에서 특정 단어가 몇 번 나오는지도 셀 수 있나요?

네, 원래 길이에서 해당 단어를 제거한 뒤의 길이를 빼고 단어 길이로 나누면 됩니다. UPPER 함수를 함께 쓰면 대소문자를 구분하지 않고 셀 수 있습니다.

마치며

문자열 함수를 조합하면 단어 수와 특정 단어의 횟수도 쉽게 알아낼 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.