Programing

문자열 수식을 "실제"수식으로 바꾸는 방법

crosscheck 2020. 11. 18. 08:33
반응형

문자열 수식을 "실제"수식으로 바꾸는 방법


나는 0,4*A1(문자열로) 셀에 있습니다. 이 "문자열 공식"을 실제 공식으로 변환하고 다른 셀에서 그 값을 계산하려면 어떻게해야합니까?


Evaluate 적합 할 수 있습니다 :

http://www.mrexcel.com/forum/showthread.php?t=62067

Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
End Function

나는 내 공식을 정상적으로 연결했지만 처음 '=에는 =.

그런 다음 필요한 곳에 텍스트로 복사하여 붙여 넣습니다. 그런 다음 텍스트로 저장된 섹션을 강조 표시하고 ctrl+ H눌러 찾아서 바꿉니다.
나는 대신 '==내 모든 기능이 활성화됩니다.

몇 단계이지만 VBA를 피합니다.

이게 도움이 되길 바란다,

Rob


재미 로 Excel에 존재하는 숨겨진 평가 기능을 사용 하는 흥미로운 기사를 찾았습니다 . 비결은 이름을 지정하고 셀에서 이름을 사용하는 것입니다. EVALUATE ()가 셀에서 직접 사용되는 경우 오류 메시지를 제공하기 때문입니다. 나는 시도하고 작동합니다! 시트 인 경우 행을 가로 질러 복사하려는 경우 상대 이름과 함께 사용할 수 있습니다.


업데이트 이것은 예전에는 작동했지만 (2007 년에는 믿습니다) Excel 2013에서는 그렇지 않습니다.

엑셀 2013 :

이것은 완전히 동일하지는 않지만 한 셀 (B1, 예)에 0.4를 입력하고 다른 셀 (C1, 예)에 텍스트 값 A1을 입력 할 수 있다면 D1 셀에 = B1 * INDIRECT (를 사용할 수 있습니다. C1), 이는 0.4 * A1의 값을 계산합니다.

따라서 A1 = 10이면 0.4*10 = 4D1 셀에 들어갑니다. 더 나은 2013 솔루션을 찾을 수 있으면 다시 업데이트하겠습니다. Microsoft가 INDIRECT의 원래 기능을 파괴 한 것을 죄송합니다!

EXCEL 2007 버전 :

비 VBA 솔루션의 경우 INDIRECT공식을 사용하십시오 . 문자열을 인수로 사용하여 셀 참조로 변환합니다.

예를 들어 =0.4*INDIRECT("A1")는 해당 워크 시트의 A1 셀에있는 값인 0.4 * 값을 반환합니다.

A1 셀이 10이면 =0.4*INDIRECT("A1")4를 반환합니다.


전문 솔루션에 VBA 솔루션을 선호합니다.

질문 검색 의 replace-procedure 부분을 사용하여 WHOLE WORDS ONLY , 다음 VBA 절차를 사용합니다.

''
' Evaluate Formula-Text in Excel
'
Function wm_Eval(myFormula As String, ParamArray variablesAndValues() As Variant) As Variant
    Dim i As Long

    '
    ' replace strings by values
    '
    For i = LBound(variablesAndValues) To UBound(variablesAndValues) Step 2
        myFormula = RegExpReplaceWord(myFormula, variablesAndValues(i), variablesAndValues(i + 1))
    Next

    '
    ' internationalisation
    '
    myFormula = Replace(myFormula, Application.ThousandsSeparator, "")
    myFormula = Replace(myFormula, Application.DecimalSeparator, ".")
    myFormula = Replace(myFormula, Application.International(xlListSeparator), ",")

    '
    ' return value
    '
    wm_Eval = Application.Evaluate(myFormula)
End Function


''
' Replace Whole Word
'
' Purpose   : replace [strFind] with [strReplace] in [strSource]
' Comment   : [strFind] can be plain text or a regexp pattern;
'             all occurences of [strFind] are replaced
Public Function RegExpReplaceWord(ByVal strSource As String, _
ByVal strFind As String, _
ByVal strReplace As String) As String

    ' early binding requires reference to Microsoft VBScript
    ' Regular Expressions:
    ' with late binding, no reference needed:
    Dim re As Object
    Set re = CreateObject("VBScript.RegExp")

    re.Global = True
    're.IgnoreCase = True ' <-- case insensitve
    re.Pattern = "\b" & strFind & "\b"
    RegExpReplaceWord = re.Replace(strSource, strReplace)
    Set re = Nothing
End Function

엑셀 시트의 절차 사용법은 다음과 같습니다.

usage in excel-sheet


In my opinion the best solutions is in this link: http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function

Here is a summary: 1) In cell A1 enter 1, 2) In cell A2 enter 2, 3) In cell A3 enter +, 4) Create a named range, with "=Evaluate(A1 & A3 & A2)" in the refers to field while creating the named range. Lets call this named range "testEval", 5) In cell A4 enter =testEval,

Cell A4 should have the value 3 in it.

Notes: a) Requires no programming/vba. b) I did this in Excel 2013 and it works.


The best, non-VBA, way to do this is using the TEXT formula. It takes a string as an argument and converts it to a value.

For example, =TEXT ("0.4*A1",'##') will return the value of 0.4 * the value that's in cell A1 of that worksheet.

참고URL : https://stackoverflow.com/questions/4471884/how-to-turn-a-string-formula-into-a-real-formula

반응형