Supportnet / Forum / Tabellenkalkulation
excel: formel mit parametern kopieren und berechnen
Frage
guten tag allerseits
ich habe folgendes problem:
ich möchte im visual basic editor von excel programmieren, dass die formel (z.b. "c*x*x+c") im feld C3 mit den werten c = 3 und x = 2 ausgerechnet im feld C4 ausgegeben wird (dabei ist das einlesen der variablen kein problem). ich habe bereits alles probiert, was mir eingefallen ist, doch excel gibt immer die fehlermeldung "unverträgliche typen" aus, da er vermutlich die formel als string ausliest und die parameter als zahlenwerte.
wäre toll, wenn jemand eine antwort wüsste!
gruss
strassi
Antwort 1 von ComputerFee
Hallo strassi,
stell doch mal dein Makro hier rein. Vielleicht kann ich dir dann ja weiterhelfen.
Gruß
ComputerFee
stell doch mal dein Makro hier rein. Vielleicht kann ich dir dann ja weiterhelfen.
Gruß
ComputerFee
Antwort 2 von strassi ul
n'abend
mein makro sieht bisher so aus:
Sub u1neu()
Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double
sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion
If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"
x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub
(*) an dieser stelle liegt mein problem: wie kann ich die formel, die im string sfunktion (bzw. in der zelle 6,6) abgespeichert ist, so umwandeln, dass excel sie mithilfe von x und a berechnen kann?
bin für jegliche hilfe dankbar!
gruss
strassi
mein makro sieht bisher so aus:
Sub u1neu()
Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double
sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion
If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"
x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub
(*) an dieser stelle liegt mein problem: wie kann ich die formel, die im string sfunktion (bzw. in der zelle 6,6) abgespeichert ist, so umwandeln, dass excel sie mithilfe von x und a berechnen kann?
bin für jegliche hilfe dankbar!
gruss
strassi
Antwort 3 von strassi ul
*nochmal n'versuch start*
Antwort 4 von strassi ul
*und nochmal*
Antwort 5 von nighty
hi strassi :)
zu deinem makro faellt mir nur wenig ein da ich kein bezug hab,dieses ist mir spontan aufgefallen :)
Sub u1neu()
Rem hier falsche deklarierung
Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double
sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion
Rem hier soll mit text innerhalb des textes gerechnet werden
If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"
Rem warum jetzt gerade tabelle1 ?
x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub
bzw.
ein schoenes kleines beispiel einer function,optimal zum lernen und zerpfluecken :)
zaehlt farbige zellen zusammen :)
Function SumInteriorColor(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
SumInteriorColor = 0
For Each Zelle In Zellen
If Zelle.Interior.ColorIndex = farbe Then
SumInteriorColor = SumInteriorColor + Zelle.Value
End If
Next
End Function
zu deinem makro faellt mir nur wenig ein da ich kein bezug hab,dieses ist mir spontan aufgefallen :)
Sub u1neu()
Rem hier falsche deklarierung
Dim funktion As Integer
Dim sfunktion As String
Dim xo, x, par, result As Double
sfunktion = InputBox("Wie soll die neue Funktion lauten?", "Eingabe Funktion")
Cells(6, 6) = sfunktion
Rem hier soll mit text innerhalb des textes gerechnet werden
If Cells(6, 6) = "" Then Cells(6, 6) = "a*x"
Rem warum jetzt gerade tabelle1 ?
x = Tabelle1.Cells(7, 3).Value
par = Tabelle1.Cells(6, 3).Value
result = sfunktion 'hier weiss ich nicht weiter (*)
Cells(14, 6) = result
End Sub
bzw.
ein schoenes kleines beispiel einer function,optimal zum lernen und zerpfluecken :)
zaehlt farbige zellen zusammen :)
Function SumInteriorColor(Zellen As Range, farbe As Long) As Double
Dim Zelle As Range
SumInteriorColor = 0
For Each Zelle In Zellen
If Zelle.Interior.ColorIndex = farbe Then
SumInteriorColor = SumInteriorColor + Zelle.Value
End If
Next
End Function
Antwort 6 von nighty
hi strassi :)
das koennte dir auch hilfreich sein
FormulaR1C1 beinhaltet auf eine zelle bezogene formel einen string
gruss nighty
das koennte dir auch hilfreich sein
FormulaR1C1 beinhaltet auf eine zelle bezogene formel einen string
gruss nighty
Antwort 7 von nighty
hi strassi :)
so wie ich das sehe sollte nach der eingabe bei der inputbox eine pruefung der zeichekette erfolgen mit anschliessendem einfuegen deiner operanden oder werte,die zum schluss zelle.FormulaR1C1 uebergeben werden sollte und somit in der zugewiesenen zelle nun aktiv ist.
gruss nighty
so wie ich das sehe sollte nach der eingabe bei der inputbox eine pruefung der zeichekette erfolgen mit anschliessendem einfuegen deiner operanden oder werte,die zum schluss zelle.FormulaR1C1 uebergeben werden sollte und somit in der zugewiesenen zelle nun aktiv ist.
gruss nighty
Antwort 8 von strassi ul
vielen dank allerseits!
werde mal ein bisschen rumprobieren und mich bei (miss-)erfolg wieder melden!
schönen sonnabend
strassi
werde mal ein bisschen rumprobieren und mich bei (miss-)erfolg wieder melden!
schönen sonnabend
strassi
Antwort 9 von nighty
hi strassi :)
die pruefung beliebiger formeln bzw. zeichenketten ist recht aufwendig :)
vielleicht ist es besser die formeln die man braucht in einem mehrdimensionalen array festzuhalten ,so zu vergleichen ,zu ersetzen(neue statiche werte bzw.operanden ) und zelle.FormulaR1C1 zuzuweisen.
gruss nighty
p.s.
sind ja auch nur so ideen auf vermutungen basierend :)
die pruefung beliebiger formeln bzw. zeichenketten ist recht aufwendig :)
vielleicht ist es besser die formeln die man braucht in einem mehrdimensionalen array festzuhalten ,so zu vergleichen ,zu ersetzen(neue statiche werte bzw.operanden ) und zelle.FormulaR1C1 zuzuweisen.
gruss nighty
p.s.
sind ja auch nur so ideen auf vermutungen basierend :)
Antwort 10 von nighty
hi strassi :)
hier noch eine idee :)
Public festhalt As Integer
ist eine globale var
einfuegen von globalen statichen var innerhalb einer formel ermoeglichen ein makrogesteuertes verhalten :)
gruss nighty
hier noch eine idee :)
Public festhalt As Integer
ist eine globale var
einfuegen von globalen statichen var innerhalb einer formel ermoeglichen ein makrogesteuertes verhalten :)
gruss nighty
Antwort 11 von nighty
hi strassi :)
mehr mich heut wohl gerne aus :)
gruss nighty
einzufuegen alt f11(vbeditor)/projektexplorer/DeineTabelle
reagiert auf formelberechnungen
Private Sub Worksheet_Calculate()
DeinString=Cells(1,1).FormulaR1C1
rem DeinString zur weitere verarbeitung
End Sub
mehr mich heut wohl gerne aus :)
gruss nighty
einzufuegen alt f11(vbeditor)/projektexplorer/DeineTabelle
reagiert auf formelberechnungen
Private Sub Worksheet_Calculate()
DeinString=Cells(1,1).FormulaR1C1
rem DeinString zur weitere verarbeitung
End Sub

