Clever-Excel-Forum

Normale Version: Anfängerfrage: Feld als Ergebnis oder Basiswert verwenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wenn ich eine Berechnung der Form a = b/c machen möchte habe ich 3 Felder: a als Ergebnis, b und c für die Basiswerte.
Ist es möglich auch Werte in a einzugeben welche automatisch zur Berechnung von b oder c verwendet werden, vorausgesetzt b oder c sind gegeben?
D.h. gleichzeitig alle 3 Felder zur Berechnung der jeweilig anderen verwenden? Bis jetzt sehe ich nur die Möglichkeit ein Feld entweder für die Ergebnisse oder für Basiswerte zu verwenden.
Möchte aber a auch manchmal für Basiswerte und manchmal fürs Ergebnis verwenden.

Vorschläge sind willkommen.
Hallo

ja, das geht. Aber nur mit VBA.


Aber: Bei  A1=B1 / C1 gibt es bei Änderung von A1 keine eindeutige Lösung

Beispiel: A1 Eingabe =0,5
dann muss der Zähler halb so groß sein wie der Nenner, also zB. 2 / 4 aber auch 8/16 oder...
Es gibt also unendlich viele Lösungen.

Da muss dann zusätzlich festgelegt werden, ob B1 oder C1 dann als Fixwert genommen werden soll


- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Das dort reinkopieren

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Const APPNAME = "Worksheet_Change"
    If Target.Count > 1 Then
        MsgBox "Bitte nur einzeln ändern"
        Application.EnableEvents = False
        Application.Undo

    Else
        If Not Intersect(Target, Union([A1], [B1], [C1])) Is Nothing Then
            If [C1] = 0 Then
                MsgBox "Division durch 0"
                Application.EnableEvents = False
                Application.Undo

            Else
                Application.EnableEvents = False
                Select Case Target.Column
               
                    Case 1
                        [B1] = Target * [C1] 'C1 wird als Fix angenommen
                       
                    Case 2
                        [A1] = Target / [C1]
                   
                    Case 3
                        If Target = 0 Then
                            MsgBox "Division durch 0"
                        Else
                            [A1] = [B1] / Target
                        End If
                End Select
            End If
   
        End If
    End If
    '*** Fehlerbehandlung
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub



LG UweD