문자열 수식을 "실제"수식으로 바꾸는 방법
나는 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 = 4
D1 셀에 들어갑니다. 더 나은 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
엑셀 시트의 절차 사용법은 다음과 같습니다.
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
'Programing' 카테고리의 다른 글
VB.NET에서 문자열을 결합하기위한 +와 &의 차이점 (0) | 2020.11.18 |
---|---|
Linux에서 ELF 파일의 데이터 섹션 내용을 어떻게 검사 할 수 있습니까? (0) | 2020.11.18 |
이미지와 텍스트 모두 가능한 UIButton? (0) | 2020.11.17 |
Rails에서 request.remote_ip와 request.ip의 차이점은 무엇입니까? (0) | 2020.11.17 |
git이 "~"로 끝나는 모든 파일을 추적하지 못하도록하는 방법은 무엇입니까? (0) | 2020.11.17 |