- 최초 작성일: 2000-12-08
- 최종 수정일: 2026-09-29
- 조회수: 20 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: -표시 처리하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
다음은 Exceller 주위에 있는 어느 분의 질문입니다.
"회사 Server에서 (텍스트 형태의) 자료를 다운받았는데 어떤 숫자는 뒤에 -표시가 붙어있어서 제대로 집계를 할 수 없습니다. 무슨 방법이 없을까요?"
-표시 처리하기
핵심 요약
- 텍스트 데이터가 546206-처럼 뒤에 마이너스 기호가 붙어 있으면 그대로는 정상적인 숫자 계산을 할 수 없습니다.
- FIND로 마이너스 기호를 찾고 LEFT·LEN으로 숫자 부분을 분리한 뒤 VALUE로 실제 음수 값으로 변환할 수 있습니다.
- IF와 ISERROR를 함께 사용하면 마이너스가 없는 정상 숫자는 그대로 두고 문제가 있는 값만 변환할 수 있습니다.
<Source>
| CODE | 매출액 | 매출원가 | 매출총이익 | 영업이익 | 영업외이익 | 영업외비용 | 경상이익 | 경상이익2 |
| A10011 | 23123123.4560000002 | 1981874 | =B14-C14 | 3513781.966 | 1756551.993 | 2994927.554 | 3389942.645 | =IF(ISERROR(FIND("-",H14)>0),H14,VALUE("-"&LEFT(H14,LEN(H14)-1))) |
| A10012 | 45619615.8320000023 | 34134209.2100000009 | =B15-C15 | 3430820.7599999998 | 1929882.5919999999 | 3441095.6839999999 | 1919607.6680000001 | =IF(ISERROR(FIND("-",H15)>0),H15,VALUE("-"&LEFT(H15,LEN(H15)-1))) |
| A10013 | 63240334.5439999998 | 15932121 | =B16-C16 | 17756383.2419999987 | 1137892.28 | 2019663.4240000001 | 16874612.0980000012 | =IF(ISERROR(FIND("-",H16)>0),H16,VALUE("-"&LEFT(H16,LEN(H16)-1))) |
| A10014 | 62589685.0549999997 | 7646319.5389999999 | =B17-C17 | 28008771.8150000013 | 961793.465 | 1840329.723 | 130235- | =IF(ISERROR(FIND("-",H17)>0),H17,VALUE("-"&LEFT(H17,LEN(H17)-1))) |
| A10015 | 42012547.7519999966 | 5091044.5980000002 | =B18-C18 | 5660534.7649999997 | 702178.107 | 1228435.933 | 5134276.9390000002 | =IF(ISERROR(FIND("-",H18)>0),H18,VALUE("-"&LEFT(H18,LEN(H18)-1))) |
| A10016 | 34801280.4790000021 | 8622976.8190000001 | =B19-C19 | 6137530.875 | 540729.368 | 1128399.4110000001 | 5549860.8320000004 | =IF(ISERROR(FIND("-",H19)>0),H19,VALUE("-"&LEFT(H19,LEN(H19)-1))) |
| A10017 | 31916907.5769999996 | 7561181.5860000001 | =B20-C20 | 652812.675 | 567315.38 | 1062661.702 | 157466.353 | =IF(ISERROR(FIND("-",H20)>0),H20,VALUE("-"&LEFT(H20,LEN(H20)-1))) |
| A10018 | 19128329.2250000015 | 11111115 | =B21-C21 | 2919137.7069999999 | 405265.181 | 471472.643 | 2852930.2450000001 | =IF(ISERROR(FIND("-",H21)>0),H21,VALUE("-"&LEFT(H21,LEN(H21)-1))) |
| A10019 | 19077033.7919999994 | 1131559.987 | =B22-C22 | 2071005.2560000001 | 289782.244 | 531414.21 | 1829373.29 | =IF(ISERROR(FIND("-",H22)>0),H22,VALUE("-"&LEFT(H22,LEN(H22)-1))) |
| A10020 | 20000123 | 5728624.7549999999 | =B23-C23 | 2788885.733 | 660557.474 | 726830.147 | 2722613.0600000001 | =IF(ISERROR(FIND("-",H23)>0),H23,VALUE("-"&LEFT(H23,LEN(H23)-1))) |
| A21002 | 13774742.8870000001 | 3888756.3429999999 | =B24-C24 | 1655804.1839999999 | 269809.362 | 697128.365 | 1228485.1810000001 | =IF(ISERROR(FIND("-",H24)>0),H24,VALUE("-"&LEFT(H24,LEN(H24)-1))) |
| A21003 | 12957327.4020000007 | 5115882.3059999999 | =B25-C25 | 958064.255 | 575612.983 | 583316.518 | 950360.72 | =IF(ISERROR(FIND("-",H25)>0),H25,VALUE("-"&LEFT(H25,LEN(H25)-1))) |
| A21004 | 9503653.4580000006 | 6024687.3150000004 | =B26-C26 | -558370.601 | 415806.464 | 403641.968 | 546206- | =IF(ISERROR(FIND("-",H26)>0),H26,VALUE("-"&LEFT(H26,LEN(H26)-1))) |
| A21005 | 9254949.284 | 4232002.3600000003 | =B27-C27 | 1404628.01 | 147150.146 | 262363.378 | 1289414.7779999999 | =IF(ISERROR(FIND("-",H27)>0),H27,VALUE("-"&LEFT(H27,LEN(H27)-1))) |
| A21006 | 8581821.1950000003 | 4715924.6500000004 | =B28-C28 | -1567281.298 | 144835.119 | 239474.997 | 1661921- | =IF(ISERROR(FIND("-",H28)>0),H28,VALUE("-"&LEFT(H28,LEN(H28)-1))) |
| A21007 | 8482274.2310000006 | 2008614.673 | =B29-C29 | -1120606.1629999999 | 110274.155 | 226983.875 | 123731 | =IF(ISERROR(FIND("-",H29)>0),H29,VALUE("-"&LEFT(H29,LEN(H29)-1))) |
| A21008 | 7905880.3059999999 | 5500385.4129999997 | =B30-C30 | -909334.966 | 361773.375 | 333632.936 | 881194- | =IF(ISERROR(FIND("-",H30)>0),H30,VALUE("-"&LEFT(H30,LEN(H30)-1))) |
| A21009 | 7618921.5779999997 | 1520858.9480000001 | =B31-C31 | 1386782.101 | 101503.464 | 186425.632 | 1301859.933 | =IF(ISERROR(FIND("-",H31)>0),H31,VALUE("-"&LEFT(H31,LEN(H31)-1))) |
| A21010 | 7376100.3600000003 | 882496.561 | =B32-C32 | 3349027.5800000001 | 90177.359 | 217872.93 | 3221332.0090000001 | =IF(ISERROR(FIND("-",H32)>0),H32,VALUE("-"&LEFT(H32,LEN(H32)-1))) |
| B30011 | 6937535.4620000003 | 2705169.9339999999 | =B33-C33 | 1360786.3500000001 | 271997.392 | 268237.931 | 1364545.811 | =IF(ISERROR(FIND("-",H33)>0),H33,VALUE("-"&LEFT(H33,LEN(H33)-1))) |
| B30012 | 6520256.0159999998 | 4741603.2690000003 | =B34-C34 | -1695696.442 | 259783.688 | 247521.399 | 163434- | =IF(ISERROR(FIND("-",H34)>0),H34,VALUE("-"&LEFT(H34,LEN(H34)-1))) |
| B30013 | 6505435.4519999996 | 5532928 | =B35-C35 | 2095372.0490000001 | 107615.97 | 179226.071 | 2023761.9480000001 | =IF(ISERROR(FIND("-",H35)>0),H35,VALUE("-"&LEFT(H35,LEN(H35)-1))) |
| B30014 | 6252700.8229999999 | 1795365.3 | =B36-C36 | 1507164.9639999999 | 80401.017 | 130484.235 | 1457081.746 | =IF(ISERROR(FIND("-",H36)>0),H36,VALUE("-"&LEFT(H36,LEN(H36)-1))) |
| B30015 | 5867188.0180000002 | 2416563.307 | =B37-C37 | 332571.353 | 86360.915 | 108679.243 | 310253.025 | =IF(ISERROR(FIND("-",H37)>0),H37,VALUE("-"&LEFT(H37,LEN(H37)-1))) |
| B30016 | 5801339.3169999998 | 1485892.79 | =B38-C38 | 1620543.3870000001 | 97524.091 | 268812.316 | 14495- | =IF(ISERROR(FIND("-",H38)>0),H38,VALUE("-"&LEFT(H38,LEN(H38)-1))) |
| B30017 | 5470702.0120000001 | 3217041.6940000001 | =B39-C39 | 381024.748 | 250054.866 | 233640.632 | 397438.982 | =IF(ISERROR(FIND("-",H39)>0),H39,VALUE("-"&LEFT(H39,LEN(H39)-1))) |
| B39999 | 5130289.7390000001 | 1822250.608 | =B40-C40 | 1036681.901 | 219368.881 | 239127.511 | 1016923.2709999999 | =IF(ISERROR(FIND("-",H40)>0),H40,VALUE("-"&LEFT(H40,LEN(H40)-1))) |
위 표에서 경상이익 부분을 보세요. 대부분의 셀은 정상적으로 표기가 되어있지만 분홍색 셀은 숫자 뒤에 -표시가
있기 때문에 제대로 된 경상이익을 구할 수 없습니다. 이 자료는 질문하신 분의 자료를 약 10% 정도만 발췌하여 가공한 것입니다. 이 정도만 되어도 눈이 어지러운데 이것보다 10배 20배나 자료가 많다면 일일이 눈으로 확인해 가며 고쳐주기란 쉽지 않을 것입니다.
VBA 코딩을 통해서도 가능하겠지만 함수 몇 가지만 활용하면 더 간단하게 해결을 할 수가 있습니다. [경상이익2]와 같이 말이지요. [경상이익2]에는 이런 수식이 들어 있습니다.
=IF(ISERROR(FIND("-",K14)>0),K14,VALUE("-" & LEFT(K14,LEN(K14)-1)))
네 가지의 함수를 조합하였는데 지금까지 한번씩은 설명을 드린 것이지요? 여기서 Value() 함수는 (숫자 형태의)문자열 데이터를 숫자로 바꾸어주는 함수입니다.
처음 보시는 분은 좀 복잡해 보여도 하나씩 분해해서 보시면 쉽게 이해하실 수 있을 것입니다. 많이 응용해 보시기를…
다음 시간에…
2000-12-08
정리 — -표시 처리하기
| 구분 | 내용 |
|---|---|
| 문제 | 텍스트로 내려받은 숫자 뒤에 -가 붙어 있어 집계가 되지 않음 |
| 해결 수식 | =IF(ISERROR(FIND("-",H14)>0),H14,VALUE("-"&LEFT(H14,LEN(H14)-1))) |
| FIND | 값에서 - 기호를 찾음. 없으면 에러가 발생하므로 원래 값을 그대로 사용 |
| LEFT, LEN | - 기호가 있으면 마지막 글자를 뺀 숫자 부분만 가져옴 |
| VALUE | 앞에 - 를 붙인 숫자 형태의 문자열을 실제 숫자로 변환 |
자주 묻는 질문 (FAQ)
Q1. 숫자 뒤에 마이너스가 붙은 텍스트를 음수로 바꾸려면 어떻게 하나요?
FIND, LEFT, LEN, VALUE 함수를 조합합니다. 마이너스를 제외한 숫자 부분을 LEFT와 LEN으로 가져와 앞에 마이너스를 붙이고 VALUE로 숫자로 바꿉니다.
Q2. 마이너스가 없는 정상 값은 어떻게 처리되나요?
IF와 ISERROR를 함께 사용합니다. 마이너스를 찾지 못해 에러가 나는 값은 원래 값을 그대로 사용하므로 정상 숫자는 변하지 않습니다.
Q3. VALUE 함수는 어떤 역할을 하나요?
숫자 형태의 문자열 데이터를 실제 숫자로 바꾸어 주는 함수입니다.
마치며
함수 몇 가지를 조합하면 VBA 없이도 많은 자료를 한꺼번에 정리할 수 있으니 응용해 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.