Supportnet / Forum / Tabellenkalkulation
VBA Hilfe
Frage
Hallo Leute,
ich bin ein Neuling was VBA angeht und wir müssen da was machen was ich einfach nicht hinbekomme. Ich habe auch schon versucht mich richtig schlau zu lesen hat aber leider auch nicht ganz funktioniert. Ich denke wenn ich hier nen guten Tipp bekomme klappt das bei mir auch.
Also zu meinem Problem:
Ich soll eine VBA Funktion erstellen zur Berechnung einer Funktion die gegeben ist. Die Funktion hat drei konstante Werte die in einer Excel Tabelle gegeben sind und eine Variable x, die von 0-10 läuft.
Neben den gegebenen x-Werten soll dann der Wert der Funktion rauskommen. Nur leider steh ich grad total auf dem Schlauch und weiß nicht was ich machen soll.
Antwort 1 von Saarbauer
Hallo,
warum mit VBA lösen?
Geht auch mit den Konstanten in den Zellen A1-A3 und dann in zelle B1 bis B11 deine Formel und als Variable x = (Zeile()-1 )
Gruß
Helmut
warum mit VBA lösen?
Geht auch mit den Konstanten in den Zellen A1-A3 und dann in zelle B1 bis B11 deine Formel und als Variable x = (Zeile()-1 )
Gruß
Helmut
Antwort 2 von AlexN.
Hallo Helmut,
mir ist schon klar dass es auch ohne VBA geht.
Nur ich muss dass mit VBA lösen. Wir fangen da gerade mit an. Ich habe zwar dazu auch was schriftliches aber leider kann ich damit nicht sehr viel anfangen.
Gruß Alex
mir ist schon klar dass es auch ohne VBA geht.
Nur ich muss dass mit VBA lösen. Wir fangen da gerade mit an. Ich habe zwar dazu auch was schriftliches aber leider kann ich damit nicht sehr viel anfangen.
Gruß Alex
Antwort 3 von Primut
Hi Alex,
zB so:
Hab nur eine Beispielfunktion eingebaut, mußt du anpassen.
Aufzurufen unter benutzerdefinierte Funktionen. Bei Eingabe der Konstanten mußt du natürlich den festen Zellbezug verwenden: $A$1
Dann kannst du es runterkopieren und bekommst für jedes x entsprechenden Funktions-Wert angezeigt.
Gruß Primut
zB so:
Function Testfunktion(Konstant1 As Double, Konstant2 As Double, Konstant3 As Double, x As Double)
Dim Ergebnis As Double
Rem Beispielfunktion
Ergebnis = (x * Konstant1 + Konstant2) * Konstant3
Testfunktion = Ergebnis
End Function
Hab nur eine Beispielfunktion eingebaut, mußt du anpassen.
Aufzurufen unter benutzerdefinierte Funktionen. Bei Eingabe der Konstanten mußt du natürlich den festen Zellbezug verwenden: $A$1
Dann kannst du es runterkopieren und bekommst für jedes x entsprechenden Funktions-Wert angezeigt.
Gruß Primut
Antwort 4 von AlexN.
Danke für die schnelle Hilfe. Ich werde das gleich mal ausprobieren.
Gruß Alex
Gruß Alex
Antwort 5 von AlexN.
Hm...ich habe eigentlich das gemacht was du geschrieben hast. Nur leider kann ich das nicht aufrufen.
Ich geb mal kurz die Funktion an die ich haben soll:
P * L ^ 3 / El * (x ^ 2 / 2 * L ^ 2 - x ^ 3 / 6 * L ^ 3
Also alle Werte bis auf das x sind Konstant.
Ich geb mal kurz die Funktion an die ich haben soll:
P * L ^ 3 / El * (x ^ 2 / 2 * L ^ 2 - x ^ 3 / 6 * L ^ 3
Also alle Werte bis auf das x sind Konstant.
Antwort 6 von Primut
Hey Alex,
klar: etwas Mathe habe ich schon vorausgesetzt!
Wo ist das Ende der Klammer und wo ist das Gleichheitszeichen der Funktion?
Gehe ich recht in der Annahme, daß P,L und El die Konstanten sein sollen?
Dann eben so:
Wie du siehst, hab ich die Klammer einfach hinten gesetzt.
Wie weit kennst du dich denn mit VBA aus???
Alt/F11 / Einfügen / Modul
dort hinein entsprechenden Code kopieren.
Aufrufen unter Excel im Funktionsmanager unter Benutzerdefiniert und dort - logisch! - unter dem Funktionsnamen Testfunktion.
Also - Übung macht den Meister,
Besten Gruß
Primut
klar: etwas Mathe habe ich schon vorausgesetzt!
Wo ist das Ende der Klammer und wo ist das Gleichheitszeichen der Funktion?
Gehe ich recht in der Annahme, daß P,L und El die Konstanten sein sollen?
Dann eben so:
Function Testfunktion(P As Double, L As Double, El As Double, x As Double)
Dim y As Double
y = P * L ^ 3 / El * (x ^ 2 / 2 * L ^ 2 - x ^ 3 / 6 * L ^ 3)
Testfunktion = y
End Function
Wie du siehst, hab ich die Klammer einfach hinten gesetzt.
Wie weit kennst du dich denn mit VBA aus???
Alt/F11 / Einfügen / Modul
dort hinein entsprechenden Code kopieren.
Aufrufen unter Excel im Funktionsmanager unter Benutzerdefiniert und dort - logisch! - unter dem Funktionsnamen Testfunktion.
Also - Übung macht den Meister,
Besten Gruß
Primut
Antwort 7 von AlexN.
Vielen Dank Primut,
bin ziemliches Anfänger in VBA, aber jetzt habe ich das ganze so halbwegs kapiert und es funktioniert auch. Werde jetzt fleißig testen.
Nochmals vielen Dank für deine schnelle Hilfe!!
Gruß Alex
bin ziemliches Anfänger in VBA, aber jetzt habe ich das ganze so halbwegs kapiert und es funktioniert auch. Werde jetzt fleißig testen.
Nochmals vielen Dank für deine schnelle Hilfe!!
Gruß Alex
Antwort 8 von AlexN.
So noch mal ich.
Wie schon vorhin geschrieben funktioniert eigentlich alles und ich habe es nun auch verstanden. Aber irgendwie kommen bei mir die falchen Werte raus. Die Funktion stimmt aber. Habe ich schon mehrmals überprüft ob da ein Fehler versteckt ist.
Ich habe das auch mit dem angegebenen Werten im Taschenrechner durchgerechnet und da kommt der Wert raus der auch nachher als Wert rauskommen soll. ich frage mich nur warum der Wert bei mir nicht rauskommt.
Wie schon vorhin geschrieben funktioniert eigentlich alles und ich habe es nun auch verstanden. Aber irgendwie kommen bei mir die falchen Werte raus. Die Funktion stimmt aber. Habe ich schon mehrmals überprüft ob da ein Fehler versteckt ist.
Ich habe das auch mit dem angegebenen Werten im Taschenrechner durchgerechnet und da kommt der Wert raus der auch nachher als Wert rauskommen soll. ich frage mich nur warum der Wert bei mir nicht rauskommt.
Antwort 9 von Primut
Hey,
ich kann deine Werte doch nicht hellsehen!
Mit welchen Werten rechnest du (Konstanten + x) was soll herauskommen und was kommt heraus?
Wie ich schon in AW3 erwähnte, mußt du, wenn du die Formel kopierst und damit für verschiedenen x anwenden willst, die Konstanten als festen Bezug deklarieren, eben $A$1 bei der Formeleingabe oder A1 markieren und dann F4.
Gruß Primut
ich kann deine Werte doch nicht hellsehen!
Mit welchen Werten rechnest du (Konstanten + x) was soll herauskommen und was kommt heraus?
Wie ich schon in AW3 erwähnte, mußt du, wenn du die Formel kopierst und damit für verschiedenen x anwenden willst, die Konstanten als festen Bezug deklarieren, eben $A$1 bei der Formeleingabe oder A1 markieren und dann F4.
Gruß Primut
Antwort 10 von AlexN.
Tschuldigung...hatte total vergessen die Werte anzugeben. So kann mir ja nicht geholfen werden.
Die Konstanten habe ich als festen Bezug deklariert...daran kann es wohl auch nicht zum Fehler kommen.
Also die Konstanten sind:
P: 10
L: 10
El: 1000
Bei x=0 kommt 0 raus. Das stimmt in beiden Fällen.
Aber bei x=1 fängt es dann an. Excel liefert mir folgenden Wert: -1166,666667. Aber sowohl der Taschenrechner wie auch der angegebene richtige Wert ergibt: 0,048.
Bei x=2 liefert Excel mir -11333,33333, aber der richtige x-Wert ist 0,187.
Und so geht es dann weiter.
Die Konstanten habe ich als festen Bezug deklariert...daran kann es wohl auch nicht zum Fehler kommen.
Also die Konstanten sind:
P: 10
L: 10
El: 1000
Bei x=0 kommt 0 raus. Das stimmt in beiden Fällen.
Aber bei x=1 fängt es dann an. Excel liefert mir folgenden Wert: -1166,666667. Aber sowohl der Taschenrechner wie auch der angegebene richtige Wert ergibt: 0,048.
Bei x=2 liefert Excel mir -11333,33333, aber der richtige x-Wert ist 0,187.
Und so geht es dann weiter.
Antwort 11 von Primut
Hey,
kleiner Tip: Bei jeder Gleichung ist es zwingend notwendig, sauber zu arbeiten!!!
Ich hab doch nicht umsonst in AW6 nach der Klammer gefragt !
Excel rechnet schon vom Prinzip her richtig, du mußt nur die Formel richtig eingeben!
Auf deine gewünschten Ergebnisse bin ich zB mit dieser abgeänderten Formel gekommen:
Ich denke, den Rest solltest du schon allein schaffen!
Gruß Primut
kleiner Tip: Bei jeder Gleichung ist es zwingend notwendig, sauber zu arbeiten!!!
Ich hab doch nicht umsonst in AW6 nach der Klammer gefragt !
Excel rechnet schon vom Prinzip her richtig, du mußt nur die Formel richtig eingeben!
Auf deine gewünschten Ergebnisse bin ich zB mit dieser abgeänderten Formel gekommen:
y=P*L^3/El*(X^2/2*L-X^3/6)/L^3
Ich denke, den Rest solltest du schon allein schaffen!
Gruß Primut
Antwort 12 von AlexN.
Hallo Primut,
habe jetzt alles geschafft. Und die Werte stimmen jetzt auch. Aber die Klammern haben am Anfang eigentlich schon gestimmt, kamen nur die falschen Ergebnisse raus. Vielleicht ist ja da ein Fehler in der Aufgabe.
Nochmals tausend Dank.
Gruß Nagel
habe jetzt alles geschafft. Und die Werte stimmen jetzt auch. Aber die Klammern haben am Anfang eigentlich schon gestimmt, kamen nur die falschen Ergebnisse raus. Vielleicht ist ja da ein Fehler in der Aufgabe.
Nochmals tausend Dank.
Gruß Nagel
Antwort 13 von CaroS
Hallo!
Da schleicht sich bei mir außerdem eine leichte Skepsis ein, ob die Formel hier richtig angegeben wurde. Potenzen, Klammern, Bruchstriche, Minus, kurz gesagt: Operatoren dreier Rangstufen bilden eine reiche Quelle für Übermittlungsfehler.
Wie wäre es, wenn Du (AlexN.) uns die Formel noch einmal mit vollständiger Klammerung angibst. Nur so zur Vergewisserung. Einen Fehler ausschließen zu können ist schließlich auch ein Schritt in die richtige Richtung.
Danke und Gruß,
CaroS
Da schleicht sich bei mir außerdem eine leichte Skepsis ein, ob die Formel hier richtig angegeben wurde. Potenzen, Klammern, Bruchstriche, Minus, kurz gesagt: Operatoren dreier Rangstufen bilden eine reiche Quelle für Übermittlungsfehler.
Wie wäre es, wenn Du (AlexN.) uns die Formel noch einmal mit vollständiger Klammerung angibst. Nur so zur Vergewisserung. Einen Fehler ausschließen zu können ist schließlich auch ein Schritt in die richtige Richtung.
Danke und Gruß,
CaroS
Antwort 14 von CaroS
Sorry, das hat sich zeitlich überschnitten. CaroS