나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 조삿갓 (choga21)

추천:  2
파일:     숫자추출하여 계산(답변)[2].xlsm (21.8KB) 조회:  4537
제목:   [RE]숫자만 추출하여 계산 - 오류수정
     
  * 질문 >>
예산액 셀에 숫자만 추출하여 계산하려고 할때 사용할 수 있는 함수가 무엇인지 궁금합니다.
==============[호호호맘님 글에 대한 답변입니다]==============

엑셀의 내장함수로서는 원하는 기능을 갖는 함수는 없고
사용자정의함수를 설계하여 써야 합니다.

기왕에 할 거면 사칙연산과 괄호, 그리고 연산 우선순위를
모두 고려해야 하기 때문에
구문분석과 수식표기법 전환, 스택 활용 등 고급 기술이 요구됩니다.

붙임 파일에 포함된 함수는 MathCalc(문자열)로 사용하면
문자열 속에 포함된 연산자와 숫자만 해석해서 계산해 줍니다.
기타 단위나 공백 등은 무시되고
단, 수식에 오류가 있는 것은 체크하지 못합니다.
그것까지 하려면 너무 많은 .... 지금도 주말 새벽이라
마눌님한테 핀잔 들었습니다. ^^

곱셈기호는 "*"로 써야 표준이지만
예제를 그렇게 하셔서 "x", "X", "×" 등을 인식하도록 했습니다.
나눗셈 기호는 표준인 "/"만 인식합니다.
혹시 다른 기호도 원하시면 IsOper 함수의 case 문을 수정하시면 됩니다.

==============[조삿갓님 글에 대한 답변입니다]==============

새벽에 올린 함수 설계에 오류가 발견되어 수정합니다.
복잡한 수식에서 우선순위가 동일한 연산자를 만났을 때
앞의 연산자를 먼저 셈하여야 하는데
뒤의 것을 먼저 셈해 버리는 오류 수정

업그레이드: 메인 함수인 MathCalc 함수에 선택 인수 추가

문법: MathCalc(계산식, [수식표기방식=0])

계산식은 문자열 형태의 산술식이고
양/음 부호, 소숫점, 코머(사실상 무시됨) 등을 수치 값과 함께 인식하고
사칙연산, 괄호, 거듭제곱(^) 등을
수학적 우선순위에 맞게 계산해 줍니다.

수식표기방식은 정수로 0이거나 생략하면
앞에 주어진 문자열 수식이 중위표기식이라고 인식하고 해석하며
양수이면 후위표기식으로 인식하고 해석합니다.

음수이면 전위표기식을 처리하고 싶지만 아직은 희망사항입니다.
(시간이...)
 
[불량 게시물 신고]  
        
  

작성일 : 2017-07-01(09:50)
최종수정일 : 2017-07-01(09:50)
 


 ◎ 관련글

  제 목   작성자   날짜
숫자만 추출하여 계산 호호호맘 2017-06-29
[RE]숫자만 추출하여 계산 조삿갓 2017-07-01
[RE]숫자만 추출하여 계산 - 오류수정 조삿갓 2017-07-01
[RE]숫자만 추출하여 계산 정일한 2017-06-30