Microsoft Excel

Herbers Excel/VBA-Archiv

Betrag in Excel-Tabelle immer negativ


Betrifft: Betrag in Excel-Tabelle immer negativ
von: Werner Perouse
Geschrieben am: 16.02.2017 15:43:16

Hallo Forum,

gibt es eine Möglichkeit, in einer Zelle eine Formel zu hinterlegen, damit jede eingegebene Zahl, egal ob positiv oder negativ, immer als negative Zahl (in rot und mit einem "-" davor) dargestellt wird. Oder ist das nur über VBA lösbar?

Danke im Voraus

Werner

  

Betrifft: Nur als Format oder physisch? Beides geht! orT
von: Luc:-?
Geschrieben am: 16.02.2017 15:53:54

Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Betrag in Excel-Tabelle immer negativ
von: Daniel
Geschrieben am: 16.02.2017 15:55:41

Hi

wenns nur um die Darstellung geht, dann mit diesem benutzerdefinierten Zahlenformat in dieser Art, der erste Teil beschreibt die Darstellungsform für positive Zahlen, der zweite Teil die Darstellungsform für negative Zahlen, man kann natürlich für beide Typen die gleiche Darstellungsform angeben:

[Rot]-#.##0;[Rot]-#.##0

zu beachten ist, dass das keinen Einfluss auf den Wert der Zelle hat, dh positive Zahlen bleiben positiv, auch wenn das "-" davor angezeigt wird.

wenns die positiven Zahlen bei Eingabe in negative umgewandelt werden sollen, geht's nur mit VBA
oder in den Formeln mit -ABS(A1)

Gruß Daniel


  

Betrifft: AW: Betrag in Excel-Tabelle immer negativ
von: Werner Perouse
Geschrieben am: 16.02.2017 16:44:36

Hallo Luc, hallo Daniel,

es geht nicht nur um die graphische Darstellung; das wäre durch die entsprechende Format-Maske problemlos machbar. In meiner Tabelle gibt es verschiedene Zeilen mit positiven oder negativen Zahlen. Ein paar dieser Zeilen können aber nur negative Zahlen enthalten. Deshalb möchte ich, dass positive Zahlen in negative umgewandelt werden. Grund: am Ende deer Tabelle wird die Spaltensumme ermittelt. und da sollten die Beträge aus bestimmten Zeilen immer abgezogen werden (oder als negative Zahl addiert werden).

Gruß

Werner


  

Betrifft: AW: Betrag in Excel-Tabelle immer negativ
von: Daniel
Geschrieben am: 16.02.2017 16:51:25

Hi
du könntest über die Datenüberprüfung absichern, dass der Anwender nur negative Zahlen eingeben kann.
Daten - Datentools - Datenüberprüfung - Einstellungen - Zulassen: Dezimal, kleiner oder gleich 0

ansonsten musst du im Change-Event des Tabellenblatts mit einer Schleife über alle Zellen des Targets laufen und die Zahlenwerte in negative Zahlen umwandeln.

Gruß Daniel


  

Betrifft: AW: Betrag in Excel-Tabelle immer negativ
von: Werner Perouse
Geschrieben am: 16.02.2017 17:57:43

Hallo Daniel,

VBA wollte ich vermeiden. Wenn es aber keine andere Möglichkeit gibt: ...... belbt nur VBA!

Gruß

Werner


  

Betrifft: AW: Betrag in Excel-Tabelle immer negativ
von: Daniel
Geschrieben am: 16.02.2017 17:59:58

naja, ich habe dir ja auch eine Möglichkeit genannt, wie du ohne VBA sicherstellen kannst, dass manuell nur negative Zahlen eingegeben werden können.
hast du die mal ausprobiert?
Gruß Daniel


  

Betrifft: Es scheint sich also nur um bestimmte Zellen ...
von: Luc:-?
Geschrieben am: 16.02.2017 19:02:45

…bzw ganze Zeilen zu handeln, Werner,
da wären Daniels Vorschläge wohl am günstigsten (natürlich eingegrenzt auf diese Zellen), wenn die Zahlen nicht nur negativ sein müssen, sondern auch tatsächlich negativ sind bzw so behandelt wdn sollen. Wahrscheinlich willst du eine einfache Summe (über Zeile bzw Spalte) bilden und diese Zellen nicht separat abziehen müssen. Das halte ich aber für bedenklich, denn durch ein derarti­ges Konzept provoziert man Fehler, da nicht jeder Ausfüllende das Konzept kennt bzw daran denkt, was wohl auch passiert.
Liegen die Daten aber schon in dieser zT irregulären Form vor, nutzen dir Daniels Vorschläge vermutlich wenig. Hier wäre dann ent­weder eine Nach­bearbei­tung der entsprd Zeilen per korri­gierender VBA-Sub­Prozedur oder die Berück­sichtigung dieses Tat­bestands in der Summen­Fml erforderlich. In der 1.Variante können die Daten entweder direkt geändert oder sie in eine ZellFml eingekleidet wdn → zB:

Dim xZ As Range
For Each xZ In ActiveWindow.RangeSelection
    xZ = -Abs(xZ) 'oder eben: xZ.Formula = "=-ABS(" & CStr(xZ) & ")"
Next xZ
Die Alternative hat den Vorteil, dass die OriginalDaten erhalten bleiben.
In der 2.Variante wdn die betreffenden Zellen mit dem Format -0;-0 versehen (unbedingt beide -0 verwenden, weil sonst bei negativen Zahlen 2× - gezeigt wird). Die auf die Werte zugreifenden Fmln müssen dann eine UDF wie zB GetText verwenden, um dieses Format beizu­behalten. Dabei wdn die Zahlen zu TextZahlen, aber mit voran­gestelltem -- ist das korri­gierbar, also --GetText(bereichsbezug). Diese UDF liefert aber stets ein Datenfeld, auch, wenn nur 1 Wert zurück­gegeben wird (in Analogie zu ZEILE und SPALTE, bei denen das auch so ist)! Warum das so ist, kannst du aus ihrem Pgm ersehen (Einzel­Werte wdn nicht sepa­rat behandelt!):
Rem Ermittelt Werte eines Bereichs in Darstellungsform --> GetRText
'   Vs1.1 -LSr -cd:2014? -1pub:20170216h[20141223h(1.0)] -lupd:20160611n
Function GetText(Bezug As Range)
    Dim cct As Long, cix As Long, rct As Long, rix As Long, ber As Range
    cct = Bezug.Columns.Count: rct = Bezug.Rows.Count
    ReDim erg(rct - 1, cct - 1)
    For Each ber In Bezug
        erg(rix, cix) = ber.Text
        cix = (cix + 1) Mod cct: rix = rix - CInt(cix = 0)
    Next ber
    GetText = erg
End Function
Gruß, Luc :-?


  

Betrifft: AW: Es scheint sich also nur um bestimmte Zellen ...
von: Werner Perouse
Geschrieben am: 18.02.2017 09:06:04

Hallo Daniel, hallo Luc,

das mit der Datenprüfung möchte ich nicht. Der Anwender soll den Betrag positiv oder negativ eingeben können. Danach soll ein positiver Wert in einen negativen umgewandelt werden.

Anscheinend gibt es ohne VBA keine Lösung. Deshalb werde ich jetzt das Problem mit VBA lösen.

Viel Dank und Gruß

Werner


  

Betrifft: Bitte sehr, dito! owT
von: Luc:-?
Geschrieben am: 18.02.2017 15:59:05

:-?