Gleichung in VBA (Excel) nach einer vorher definierten Variablen automatisch umstellen

Hallo,

für mein Studium muss ich ein Projekt machen und habe diesbezüglich ein Problem und hoffe daher um Ihre Mithife.

Das Problem ist folgendes: Ich muss verschiedene Formeln in Excel programmieren, die automatisch nach einer Variablen umgestellt werden. Also, ich habe bspw. die Formel: x=y+z. In die Zelle „A1“ kann der Wert für „x“ eingegeben werden, in die Zelle „A2“ den für „y“ und in „A3“ den für „z“. Wenn man jetzt bspw. ein „?“ in „A2“ eingibt, so soll die Formel automatisch nach „y“ umgestellt und berechnet werden. Ich könnte zwar die Formeln per Hand umstellen, aber da es eine Unmenge von Formeln sind, ist dies nicht möglich.

Ich hoffe ich habe das Problem verständlich geschildert. Ist die Problemlösung mit VBA möglich?

Vielen Dank

Viele Grüße
Marcel

Sehr geehrter Fragesteller,

ganz gleich, ob Sie eine Lösung mit oder ohne VBA anstreben, so werden Sie nicht umhin kommen, zunächst die Grundstruktur der jeweils umzustellenden Formeln zu implementieren.

Mir ist nicht bekannt, dass es derzeit fertige VBA-Module gibt, die in der Lage wären, Formeln automatisch hinsichtlich aufzulösender Variablen umstellen zu können…?!

Vielleicht möchten Sie Ihre Anfrage noch konkretisieren?

Mit freundlichen Grüßen
A. Böhme

Hallo Marcel,

VBA=VisualBasicAplication. Ich hatte in mein Profil Excel AUSSER VBA geschrieben:wink:) und kann dir da leider nicht weiterhelfen.

Aber wenn ich an meine Homecomputer-Basic-Zeiten zurückdenke, wirst du um das Umstellen der Formeln nicht herumkommen.

Viel Glück noch

Thorsten

Hallo Herr Böhme,

schade das es nicht so einfach funktioniert. Ich habe gedacht, dass es funktionieren würde, da bspw. in diversen Matheprogrammen oder in C eine Solve-Funktion vorhanden ist, die in etwa so aussieht:

solve(‚x=y+z‘,y)

Hierbei wird die Formel nach „z“ umgestellt.

Um ein „manuelles“ umstellen der Formeln werde ich wohl nicht herum kommen, oder?

Vielen Dank für die Mithilfe

Viele Grüße
Marcel

Hallo Thorsten,

sorry, habe ich übersehen :smile: Trotzdem besten Dank für die Hilfe, ich habe es fast befürchtet, dass ich es per Hand umstellen muss.

Viele Grüße
Marcel

Hallo,
leider kann ich nicht weiterhelfen. Wünsche trotzdem viel Erfolg !
MfG
CSG

Sehr geehrter Herr Marcel,

stimmt, innerhalb diverser Mathematik-Programme bzw. auch in einigen C-Bibliotheken gibt es eine SOLVE-Funktion, die das von Ihnen beschriebene Problem lösen könnte.

Spontan habe ich noch die Idee, dass Sie Ihre Frage ggf. einmal in das EXCEL-Forum einstellen; vielleicht ergibt sich daraus ein konkreter Lösungsansatz?

Die Adresse lautet:

http://www.office-loesung.de/index3.php

Viel Erfolg!

Mit freundlichen Grüßen
A. Böhme

Hallo Marcel,

ich bin gerade im Urlaub und kann mich daher erst am Montag der Sache annehmen. Ich hoffe das ist früh genug.

Melde dich bitte wenn dein Problem bis dahin bereits gelöst ist.

Gruß

Thomas

Hallo Marcel,

im Endeffekt isses ziemlich einfach :wink:

A1, A2, A3 möchtest du die Variablen eingeben
und ich sag mal in B1möchten wir den Wert bekommen, für den das ? steht.

In VBA programmierst du eine Funktion. Dazu fügst du ein neues Modul in das VBA Projekt der Excel Mappe ein. Anschließend erzeugst du eine neue Funktion:

Public Function myFunction(Optional X As Variant, Optional Y As Variant, Optional Z As Variant) As Double

'Hier muss nun die Funktionalität rein
'Zunächst sollte man natürlich unterscheiden, welche Paramater fehlen und welche da sind:

If X = „?“ Then
'Code wenn X fehlt
Else
If Y = „?“ Then
'Code wenn Y fehlt
Else
'Code wenn Z fehlt
End If
End If
End Function

In der Funktion fehlt noch der Code für die von dir benötigten Berechnungen. Außerdem muss das Ergebnis noch zurückgegeben werden mit myFunction = Ergebnisvariable.

In Excel kannst du die Funktion dann verwenden indem du sie wie eine normale Excel Formel benutzt.

In Zelle B1 stünde dann:
=myFunction(A1;A2;A3)

Ich hoffe, das hilft dir weiter :wink:

Gruß

Manuel

Hey,

absolut kein Problem, trotzdem danke für die Mühe.

Viele Grüße
Marcel

Hallo Herr Böhme,

das ist eine gute Idee, ich werde das Problem mal in das Excelforum stellen.

Danke für Ihre Hilfe.

Viele Grüße
Marcel

Hallo Thomas,

absolut kein Problem. Ich werde mich melden, wenn das Problem zwischenzeitlich gelöst ist.

Dann noch viel Spaß im Urlaub und viele Grüße
Marcel

Hallo Manuel,

danke für die Hilfe, es hilft mir in der Tat weiter. Um das manuelle umstellen der Formel werde ich dann wohl nicht herum kommen.

Viele Grüße
Marcel

Hallo Marcel,

eigentlich sollte das die Formel so wie ich sie dir aufgebaut habe, selsbt bewerkstelligen können, es sei denn du hast da noch weitere Ansprüche an die Formel, die mir nicht bekannt sind :wink:

So wie die Formel jetzt aufgebaut ist, übrgibst du 2 Zahlen und ein „?“. Je nachdem der wievielte Parameter der Formel das „?“ ist, soll innerhalb der Funktion unterschiedlich gearbeitet werden um ein Ergebnis zu liefern. Was genau da passiert musst du selbst wissen - hast ja nicht so genau beschrieben, sonst hätt ich da vielleicht noch etwas ausführlicher drauf eingehn können.

Alternativ könnte es natürlich auch ein Makro besorgen, dass du mit einer Logik fütterst, die weiß, wie sie Formeln auflösen muss. Das dürfte aber wesentlich schwieriger werden UND mit den wenigen Informationen die ich hab, kann ich dir da so noch nicht wirklicht mit weiterhelfen.

Hallo,
die Aufgabe ist nicht gan trivial. Eine beliebige Formel nach einer Variablen umzustellen ist für ein Programm nicht ganz leicht. Excel (VBA) kann das so weit ich weiss gar nicht.
Es bleiben dir also folgende Möglichkeiten:

  1. Doch alle Formeln selbst umstellen
  2. Einen Algorithmus selber entwickeln (er muss ja nicht allgemeingültig sein, sondern nur für deine Formeln gelten)
  3. Ein anderes Programm verwenden (Mathematica kann z.B. Formeln umstellen)

Gruß,
Kevin

Hallo Kevin,

besten Dank für die Info. Selber ein Algorithmus bei meinen Kenntnissen zu entwickeln :smile: Ich glaube da komme ich um das Umstellen per Hand nicht drumrum.

Viele Grüße
Marcel

Hey Manuel,

danke für die ausführlichen Infos. Ich glaube um ein Makro werde ich nicht ganz herum kommen. Da ich aber überhaupt keine Ahnung von so etwas habe :smile: werde ich es lassen müssen. Ich werde die Formeln in allen möglichen Varianten einbauen, so dass nur noch die richtige ausgewählt werden muss. So müsste es ja dann auch gehen :smile:

Viele Grüße
Marcel

Hallo Marcel,
Problem erkannt - sorry, aber da kann ich Dir leider nicht weiterhelfen. Ich hab da keine Idee.
Gruß
Dieter

Hallo Marcel

Wenn du unbedingt mit VBA etwas machen willst kannst du mit der unten stehenden Funktion Zellen überwachen und bei Änderungen irgend etwas machen. z.B. wenn irgendwo ein „?“ geschrieben wird an einer andern Stelle eine Formel rein schreiben…

Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn Zellen geändert werden, wird das hier bemerkt und es können Aktionen ausgelösst werden.
'Argumente: Target ist der Range der verändert wurde.
With Worksheets(„Tabelle1“)
If Not Application.Intersect(Target, .Range(„A1“)) Is Nothing Then

End If
End With

Ich würde aber mit Formeln arbeiten.
In einer Zelle (A2) die Zellen (B2,C2,D2) überwachen wo die Variabelwerte eingegeben:
=WENN(B2="?";„a“;WENN(C2="?";„b“;„c“))
Diese Zelle verwenden um mit
=SVERWEIS($A2;$H$2:blush:I$4;2;FALSCH)
die richtige Formel in E2 zu selektieren.
Die Formeln liegen in der Matrix
H2:I4
In H sind die Indexe a,b,c (gesuchte Variabeln)
In I sind die Formeln die nach a,b oder c aufgelöst sind.
Viel Spass
Gruss
Gerold

Hallo Marcel,

also bei einfachen Formeln, wie Du sie hier angegeben hast ist das sicherlich möglich.
Das kann man aber beliebig komplex machen.

Um eine sinnvolle Antwort zu geben bräuchte ich mal ein konkretes Beispiel.

Gruß
Ben