Jak przekształcić formułę ciągową w" rzeczywistą " formułę
Mam 0,4*A1
w komórce (jako ciąg znaków). Jak przekształcić tę "formułę ciągową" w rzeczywistą formułę i obliczyć jej wartość w innej komórce?
7 answers
Evaluate
"might suit": {]}
Http://www.mrexcel.com/forum/showthread.php?t=62067
Function Eval(Ref As String)
Application.Volatile
Eval = Evaluate(Ref)
End Function
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 07:47:13
Połączyłem formułę jako normalną, ale na początku miałem '=
zamiast =
.
Następnie kopiuję i wklejam jako tekst tam, gdzie go potrzebuję. Następnie zaznaczam sekcję zapisaną jako tekst i naciskam ctrl + H aby znaleźć i wymienić.
Zamieniam '=
na =
i wszystkie moje funkcje są aktywne.
To kilka etapów, ale unika VBA.
Mam nadzieję, że to pomoże,
Rob
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 09:44:57
Dla Zabawy znalazłem ciekawy artykuł , aby użyć jakoś ukrytej funkcji oceny, która istnieje w Excelu. Sztuczka polega na przypisaniu go do nazwy i użyciu nazwy w komórkach, ponieważ funkcja EVALUATE() spowoduje błąd msg, jeśli zostanie użyta bezpośrednio w komórce. Próbowałem i działa! Można go używać z nazwą względną, jeśli chcesz skopiować wiersze, jeśli arkusz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-17 16:16:31
UPDATE to kiedyś działało (w 2007 roku, jak sądzę), ale nie w Excelu 2013.
EXCEL 2013:
To nie to samo, ale jeśli można umieścić 0.4 w jednej komórce (powiedzmy B1), a wartość tekstową A1 w innej komórce (powiedzmy C1), w komórce D1, można użyć = B1 * pośredniego (C1), co skutkuje obliczeniem wartości 0.4 * A1.
Więc, jeśli A1 = 10, dostaniesz 0.4*10 = 4
w komórce D1. Zaktualizuję ponownie, jeśli znajdę lepsze rozwiązanie 2013 i przepraszam, że Microsoft zniszczył oryginalna funkcjonalność INDIRECT!
EXCEL 2007 wersja:
Dla rozwiązania innego niż VBA, użyj wzoru INDIRECT
. Pobiera łańcuch znaków jako argument i konwertuje go na odniesienie do komórki.
Na przykład, =0.4*INDIRECT("A1")
zwróci wartość 0.4 * wartość, która znajduje się w komórce A1 tego arkusza.
Jeśli komórka A1 będzie, powiedzmy, 10, to =0.4*INDIRECT("A1")
zwróci 4.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 07:52:19
Wolę VBA-rozwiązanie dla profesjonalnych rozwiązań.
Z częścią replace-procedure w pytaniu Wyszukaj i zamień tylko całe słowa , używam następującej procedury 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
Użycie procedury w arkuszu excel wygląda następująco:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 10:44:51
Moim zdaniem najlepsze rozwiązania są pod tym linkiem: http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function
Oto podsumowanie: 1) w komórce A1 wpisz 1, 2) w komórce A2 wpisz 2, 3) w komórce A3 wpisz +, 4) Utwórz nazwany zakres, z "= Evaluate (A1 & A3 & A2) " w polu odnosi się podczas tworzenia nazwanego zakresu. Nazwijmy ten nazwany zakres " testEval", 5) w komórce A4 enter =testEval,
Komórka A4 powinna mieć w sobie wartość 3.
Uwagi: a) Nie wymaga programowania / vba. b) zrobiłem to w Excelu 2013 i działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-19 17:32:26
Najlepszym, Nie-VBA, sposobem na to jest użycie formuły tekstowej. Przyjmuje łańcuch znaków jako argument i konwertuje go na wartość.
Na przykład = TEXT ("0.4*A1",'##') zwróci wartość 0.4 * wartość, która znajduje się w komórce A1 tego arkusza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 02:40:22