Ergebnis 1 bis 10 von 10
  1. #1
    Registriert seit
    06.01.2008
    Beiträge
    10

    Bedingte Formatierung Excel 2010

    Ich habe eine Tabelle mit u.a. folgenden Spalten: Spalte 1 =Typ und Spalte 2 = Betrag. In der Spalte Typ kommen nur die Werte Ausgabe/Einnahme vor.
    Da ich gelegentlich das Minuszeichen bei der Eingabe von Ausgaben vergesse, habe ich versucht eine bedingte Formatierung anzuwenden, was aber nicht funktionierte.
    Meine Absicht wäre, dass bei der Wahl von Ausgabe in der ersten Spalte, die Zahl in der zweiten Spalte direkt mit einem Minuszeichen formatiert wird, bei der Wahl Einnahme aber ohne Minuszeichen.
    Der Versuch die bedingte Formatierung über eine WENN Bedingung zu erzielen scheiterte. Gibt es eine andere Lösung oder kann man dies gar nicht tun?

  2. #2
    Registriert seit
    22.06.2010
    Beiträge
    29
    Wird mit den Beträgen in Spalte 2 (Spalte B) anschliessend etwas gerechnet, z.B. eine Summe gezogen? Wenn dies so wäre, hilft dir die Zellformatierung nichts, da die Zahl in einer Summenformel dennoch als "positiv" erkannt würde und somit die Summe falsch wäre. Die Zellformatierung ändert nur das visuelle Erscheinungsbild der Zahl, die Zahl an sich bliebe dennoch positiv, auch wenn es so aussähe, als stünde ein Minus davor.

    Was du machen könntest, wäre eine Gültigkeitsprüfung (bei Excel 2010 heisst es "Datenüberprüfung") :

    Angenommen, in Zelle A2 steht "Einnahme" oder "Ausgabe" und in B2 der Betrag. Klick auf Zelle B2 und gehe dann ins Register Daten - Datenüberprüfung - Datenüberprüfung... Dort bei den Einstellungen unter "Zulassen": Benutzerdefiniert wählen und die Formel eingeben: =WENN(A2="Ausgabe";B2<0)

    So werden in B2 nur noch negative Beträge zugelassen, wenn in A2 "Ausgabe" steht.

  3. #3
    Registriert seit
    28.02.2010
    Ort
    Grossraum Aarau
    Beiträge
    614
    Grüezi Urban

    Eine andere Idee mit einer Hilfs-Spalte C (Betrag) in dieser Spalte wird der in Spalte B (Eingabe.Betrag) eingetragene Wert negativ gesetzt, wenn das Kriterium "Ausgabe" aus der Spalte A (Typ) erfüllt ist.

    Nach meiner Erfahrung bringt diese einfache Lösung weniger oder sogar keine Probleme bei der weiteren Verarbeitung der Werte.

    Du findest eine Muster-Datei im Anhang, getestet in Excel 2013 läuft aber auch in Excel 2010. Beachte auch die Zellformatierungen.
    Angehängte Dateien Angehängte Dateien
    Freundliche Grüsse
    Turakos

    Das Forum lebt von den Erfahrungen und den Beiträgen der User – ein Feedback ist wünschenswert.

  4. #4
    Registriert seit
    09.08.2007
    Beiträge
    245
    Zitat Zitat von Urban Beitrag anzeigen
    Meine Absicht wäre, dass bei der Wahl von Ausgabe in der ersten Spalte, die Zahl in der zweiten Spalte direkt mit einem Minuszeichen formatiert wird, bei der Wahl Einnahme aber ohne Minuszeichen.
    Der Versuch die bedingte Formatierung über eine WENN Bedingung zu erzielen scheiterte. Gibt es eine andere Lösung oder kann man dies gar nicht tun?
    Hallo Urban

    Das lässt sich mit VBA recht gut machen. – Ich habe da folgendes gebastelt:

    Code:
    Option Compare Text
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    tc = Target.Column
    tr = Target.Row
    If tr = 1 Then Exit Sub
    If tc > 2 Then Exit Sub
    Application.EnableEvents = False
        If tc = 2 Then
            wert = Abs(Target.Value)
            If Cells(tr, 1) = "Ausgabe" Then wert = wert * (-1)
            Cells(tr, 2).Value = wert
        End If
        If tc = 1 Then
            wert = Target.Value
            If wert = "Ausgabe" Then
                Cells(tr, 2) = Abs(Cells(tr, 2).Value) * (-1)
            End If
            If wert = "Einnahme" Then
                Cells(tr, 2) = Abs(Cells(tr, 2).Value)
            End If
        End If
    Application.EnableEvents = True
    Exit Sub
    End Sub
    
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column > 2 Then Exit Sub
    If Selection.Count > 1 Then
        MsgBox "In den Spalten A:B darf jeweils nur eine Zelle markiert werden."
    End If
    End Sub
    Die beiden Makros (Ereignisprozeduren) müssen im VBA-Explorer unter der entsprechenden Tabelle gespeichert werden, nicht als Modul!

    Das erste Makro macht das, was Du möchtest:
    In Spalte A stehen nur die Begriffe "Einnahme" oder "Ausgabe".
    Bei "Einnahme" soll der Wert in Sp. B positiv sein, bei "Ausgabe" negativ, egal ob der Wert in Sp. B positiv oder negativ erfasst wird.
    Das soll auch gelten, wenn der Begriff in Sp. A nachträglich geändert wird.

    Wenn in den Spalten A:B mehrere Zellen markiert werden, um sie gleichzeitig zu ändern, führt das zu Fehlern. Deshalb das zweite Makro, das bei einer Mehrfachmarkierung eine entsprechende Meldung ausgibt.

    Grüsse Niclaus
    Angehängte Dateien Angehängte Dateien

  5. #5
    Registriert seit
    06.01.2008
    Beiträge
    10
    Hallo Weer

    diese Lösung ist genau das, was ich suchte.
    Ich habe 2 Probleme:
    1. Meine Tabelle enthält in Wirklichkeit 6 Spalten. Die Spalte Ausgabe/Einnahme trägt die Nummer 3, jene mit Betrag die Nummer 6. Wie muss ich dies im Makro ändern?
    2. Ich habe keine Erfahrung, wie man ein Makro in einer Tabelle einbindet (VBA)

    Vielen Dank für die Hilfe

    Urban

  6. #6
    Registriert seit
    09.08.2007
    Beiträge
    245
    Zitat Zitat von Urban Beitrag anzeigen
    diese Lösung ist genau das, was ich suchte.
    Ich habe 2 Probleme:
    1. Meine Tabelle enthält in Wirklichkeit 6 Spalten. Die Spalte Ausgabe/Einnahme trägt die Nummer 3, jene mit Betrag die Nummer 6. Wie muss ich dies im Makro ändern?
    2. Ich habe keine Erfahrung, wie man ein Makro in einer Tabelle einbindet (VBA)
    Grüezi Urban

    Das 1. ist kein Problem. In der angehängten Datei die Tabelle2:

    Code:
    Option Compare Text
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    tc = Target.Column
    tr = Target.Row
    If tr = 1 Then Exit Sub
    
    Set Target = Intersect(Target, Range("C:C, F:F"))
        If Target Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
        If tc = 6 Then
            wert = Abs(Target.Value)
            If Cells(tr, 3) = "Ausgabe" Then wert = wert * (-1)
                Cells(tr, 6).Value = wert
        End If
        If tc = 3 Then
            wert = Target.Value
            If wert = "Ausgabe" Then
                Cells(tr, 6) = Abs(Cells(tr, 6).Value) * (-1)
            End If
            If wert = "Einnahme" Then
                Cells(tr, 6) = Abs(Cells(tr, 6).Value)
            End If
        End If
    Application.EnableEvents = True
    Exit Sub
    
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set Target = Intersect(Target, Range("C:C, F:F"))
        If Target Is Nothing Then Exit Sub
    If Selection.Count > 1 Then
        ActiveCell.Select
        MsgBox "In den Spalten C und F darf jeweils nur eine Zelle markiert werden."
    End If
    End Sub
    Zu 2. - Kennst Du Dich in VBA generell aus? - Die Spezialität der Ereignisprozeduren hat Gaby Salvisberg in einem Beitrag hier im PCTipp so beschrieben:

    Eine Ereignisprozedur muss unter den Excel Objekten in eine Tabelle (allenfalls in die Arbeitsmappe) eingefügt werden - nicht in ein Modul!
    Öffnen Sie den VisualBasic Editor, indem Sie Alt+F11 drücken. Klappen Sie in der linken Fensterhälfte allenfalls «Microsoft Excel Objekte» auf und doppelklicken Sie den Namen der betroffenen Tabelle (z.B. «Tabelle1»). Kopieren Sie den Makro-Code hinein. - Damit wendet sich das Makro ausdrücklich in jener Tabelle an.


    Wenn ich sie verstanden habe, dann Du sicher auch ;-) Sonst frage einfach nach.
    Grüsse Niclaus
    Angehängte Dateien Angehängte Dateien

  7. #7
    Registriert seit
    06.01.2008
    Beiträge
    10
    Hallo Weer

    es hat geklappt. Die Tabelle funktioniert tadellos. Sogar das mit VBA ist gut gegangen.
    Vielen herzlichen Dank für deine Hilfe

    Urban

  8. #8
    Registriert seit
    25.07.2007
    Ort
    Zürich
    Beiträge
    5.951
    Hallo sirion

    Zitat Zitat von sirion Beitrag anzeigen
    Angenommen, in Zelle A2 steht "Einnahme" oder "Ausgabe" und in B2 der Betrag. Klick auf Zelle B2 und gehe dann ins Register Daten - Datenüberprüfung - Datenüberprüfung... Dort bei den Einstellungen unter "Zulassen": Benutzerdefiniert wählen und die Formel eingeben: =WENN(A2="Ausgabe";B2<0)

    So werden in B2 nur noch negative Beträge zugelassen, wenn in A2 "Ausgabe" steht.
    Interessante Idee. Ich habs aus Neugier mal ausprobiert und erhalte allerlei Fehler, denn es müssen ja auch die positiven Werte gültig sein. Aber so hat es dann geklappt:
    =ODER(UND(A2="Ausgabe";B2<0);UND(A2="Einnahme";B2> 0))

    Herzliche Grüsse
    Gaby
    Redaktion PCtipp
    ---------------
    *** PCtipp Heft oder E-Paper abonnieren ***
    *** Auf Facebook: PCtipp, Computerworld *** PCtipp auf Google+ und Twitter ***

  9. #9
    Registriert seit
    19.10.2008
    Beiträge
    3.183
    Es tut mir leid aber die normalen Menschen arbeiten mit zwei Spalten, gibt sicher tausende kostenlose Vorlage von Excel



    Gruss, Charlito

    Warum einfach wenn‘s auch kompliziert geht?

  10. #10
    Registriert seit
    09.07.2008
    Ort
    Provence
    Beiträge
    1.373
    Wollte ich auch gerade erwähnen!
    Im Weinkeller stapelt man ja die vollen Flaschen auch nicht im selben Gestell wie die leeren.
    Viele Grüsse, Pagnol
    Legende zum Profilbild: mein Internetanschluss im südlichen Europa

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •