엑셀함수 관련해서 질문합니다 (__)

엑셀함수 관련해서 질문합니다 (__)

작성일 2007.01.17댓글 1건
    게시물 수정 , 삭제는 로그인 필요

건설회사에 다니고있는 기사입니다   꾸벅(__)

 

다름이 아니오라 건축적산을 하다보면 계산수식이 많아서 그 시간도 무지못하는데

 

회사마다 골조물량산출서식이 있으시겠지만

 

저는 보통 [산출근거]에 수식을 쓰고 거의 계산기로 하는 방식을 쓰는지라 시간도

 

오래걸리고 추후에 보기도 불편해서

 

엑셀로 만들어볼려고 하는데여

 

산출근거란에 수식 ex) (0.4+0.3)*2.04/0.25  <<<<< 이런식으로 한셀에 전부 수식을 입력하고

 

결과값을 원하는 셀에 수식결과값이 나오게 할수있는 함수가 있나여?

 

아님 조금 복잡하더라고 한번 만들어 놓으면 후에 편하게 쓸수있는 방법을 알려주시면

 

감사하겠습니다.

 

엑셀 고수님들 도와주세요 .......



profile_image 익명 작성일 -

님에게 딱 맞는 답변을 한 적이 있어서 그대로 올립니다.

==================================================

답변에 조금 추가 합니다.

 

아래 아래 코드는 소수점 등 복잡한 수식이 들어갈 때는 그릇된 값을 리턴하는 문제가 있어서

 

아예 자바스크립트의 함수를 가져다 쓰도록 하는 아래 코드를 쓰세요

 

=eval2(A1)

(A1 은 "1+2*3-1"과 같은 수식 문자열이 입력된 셀)

 

단, 다음과 같은 설정을 꼭 해 주셔야 합니다.

1. VBA편집기를 여시고

2. "도구-참조" 여시고,

3. Microsoft Script Control 1.0(혹은 다른 숫자)에 꼭 체크표시를 하시고

'확인'을 누릅니다.

 

그 다음 아래 코드를 붙여넣으시고 워크시트에서 일반함수 처럼 사용하세요.

 

Function eval2(rng As Range)
   
   Dim sc
  
   Set sc = CreateObject("ScriptControl")
   sc.Language = "JScript"
  
    eval2 = sc.eVal(rng.Value)

 

End Function

==================================================

덧셈, 나눗셈, 곱하기, 괄호가 들어간 수식 등 어떤 수식 문자열이라도

계산 결과가 나오게 하려면 다음과 같은 사용자 정의함수를 이용하시면 됩니다.

 

자바스크립트 등의 =eval(문자열) 함수같은 것이지요.

 

아래 방법 그대로 따라하십시요.

 

1. 해당 워크시트에서 Alt+F11을 눌러 VBA편집기를 엽니다.

2. 위의 메뉴바에서 '삽입-모듈'을 실행합니다.

3. 빈 하얀 화면이 나오면 아래 코드를 그대로 복사해 붙여넣습니다.

4. 다시 Alt+F11을 눌러 원래 워크시트로 돌아옵니다.

5. 워크시트에서 =eval(A1)과 같이, 일반 함수처럼 쓰세요

 

(A1 은 "1+2*3-1"과 같은 수식 문자열이 입력된 셀)

 

Function eVal(str As String)

 

    Dim val1, val2, charN, calc, i
    calc = Asc("+")    
    For i = 1 To Len(str)    
        charN = CInt(Asc(Mid(str, i, 1)))        
        If Asc("0") <= charN And charN <= Asc("9") Then val2 = val2 * 10 + charN - Asc("0")        
        If charN = Asc("+") Or charN = Asc("-") Or charN = Asc("*") Or charN = Asc("/") Or charN = Asc("=") Or i = Len(str) Then           
            Select Case calc
                Case Asc("+")
                     val1 = CInt(val1) + CInt(val2)
                Case Asc("-")
                    val1 = val1 - val2
                Case Asc("*")
                    val1 = val1 * val2
                Case Asc("/")
                    val1 = val1 / val2
            End Select            
            calc = charN
            val2 = 0            
        End If        
    Next i    
    eVal = val1

End Function

엑셀 함수 관련해서 질문하고 싶습니다!

... 있는 함수가 있나요?? 예를 들어서 A1열부터 D1열에 있는 수를 모두 더해서 E1열에... 따로따로 행마다 입력하는 방법은 =SUM()함수를 쓰면 되는걸로 알고 있는데 2행에 썼을...

엑셀 함수 관련 질문

... 인덱스/매치 함수에서 절대참조는 무조건 안해도되는건가요? 표가 두개이고... 헷갈려서 질문합니다 1.사진 속 엑셀에서 시간은 도착시간-출발시간이고 요금은...

엑셀 함수 관련 질문드립니다.

SUMIF를 써야할것 같아서 시도를 해봤는데 잘 안되네요ㅠㅠ 함수입력시 결과값대로 나오게 하려고 합니다. 엑셀 파일 첨부할테니 능력자 분들의 많은...

엑셀 row, mod 함수 관련해서 질문드립...

안녕하세요 엑셀 mod, row함수 사용중에 궁금한게 있어서 질문드립니다ㅠㅠ 사진에 보시다 싶이 함수를 저렇게 사용 했는데 당초 금액이 숫자가 보이지 않는데 이유가...

엑셀 함수 관련해서 질문드립니다!

... 다름이 아니라 엑셀에서 학교를 정렬하려고 하는데 각 인원마다 OO대학교 또는 OO대학 또는 OO대 이렇게 다르게 입력이 되어 있어서요. 모두 OO대학교로 통일을...