Seite 1 von 1
Re: Berechnung von Formeln in Stringform
Verfasst: Di, 28.04.2015 12:38
von Karolus
Nein in Calc gibts diese Funktion nicht.
Aber das ganze ist doch trivial per →Suchen und ersetzen lösbar:
Kopiere die "Formeln" in die Spalte in der du die Ergebnisse haben möchtest markiere die Ergebnisspalte und:
→Bearbeiten→Suchen und Ersetzen:
- Suche ^.*$
ersetze durch =&
mit den Optionen:
- [x]regulärer Ausdruck
[x]nur in Selektion
Re: Berechnung von Formeln in Stringform
Verfasst: Mi, 29.04.2015 17:49
von Karolus
Hallo
Alsogut - hier ist ein Makro das den Text aus der aktuellen Zelle nimmt und ihn als Formel in die Zelle drei Spalten weiter rechts als Formel einträgt.
Code: Alles auswählen
Sub evaluate_offset
off = 3 '3 Spalten nach rechts-- bitte anpassen'
doc = thisComponent
sel = doc.CurrentSelection
sheet = sel.Spreadsheet
calcstring = sel.String
addr = sel.CellAddress
i_row = addr.Row
i_col = addr.Column
target = sheet.getCellByPosition(i_col+off, i_row)
target.FormulaLocal = "=" & calcstring
End Sub
Re: Berechnung von Formeln in Stringform
Verfasst: Mi, 29.04.2015 18:22
von clag
hallo Gast und alle anderen,
habe mal für dein Anliegen ein Makro erstellt, das deine Wünsche und etwas mehr erfüllt
also einen Textstring in einer Zelle in eine Formel wandeln,
oder einen solchen FormelString aus einer andern Zelle holen und als Formel einfügen.
Für einzelne Zellen oder markierte Bereiche
Code: Alles auswählen
Sub TextToFormula
oCalc = thisComponent
osheet = oCalc.CurrentController.ActiveSheet
sQFx = "QuickFormula"
if InStr(oCalc.Currentselection.absoluteName,";") > 1 then
nRanges = oCalc.CurrentSelection.Count
else
nRanges = 1
end if
for N=0 to nRanges-1
if nRanges =1 then oRangeAddress = oCalc.CurrentSelection.RangeAddress
if nRanges >1 then
oRangeAddress = oCalc.CurrentSelection.RangeAddresses(N)
end if
StartC = oRangeAddress.StartColumn
StartR = oRangeAddress.StartRow
LastC = oRangeAddress.EndColumn
LastR = oRangeAddress.EndRow
for C=StartC to LastC
for R=StartR to LastR
myFormulatext = oSheet.getCellByPosition(C,R).Formula
if myFormulatext="" or Left(myFormulatext,1)="=" then
goto jump:
else
if left(myFormulatext,3)="QFx" and _
oCalc.NamedRanges.hasByName(sQFx & mid(myFormulatext,4)) then
sFstring = oSheet.getCellRangeByName(sQFx & mid(myFormulatext,4)).Formula
sFString = "=" & join(split(sFstring,"“"),"""")
oSheet.getCellByPosition(C,R).FormulaLocal = sFString
else
oSheet.getCellByPosition(C,R).FormulaLocal = "=" & myFormulatext
end if
end if
jump:
next
next
next
End Sub
viel Spaß und Erfolg damit
PS
Karolus war wieder etwas schneller dafür ist mein Makro vielleicht etwas universeller und komfortabler
