[Excel] 2010 - Berechnen wenn Zelle mit # gefüllt

Juwee

Mitglied
Guten Morgen,

ich such mich dusselig und hab auch schon einpaar Sachen versucht, doch ohne Ergebnis.
Wie kann ich per Makro oder Formel Werte automatisch berechnen lassen wenn die Zelle ein Präfix wie z.B. # enthält?
Ich bekomme z.B. die Daten mal in mg und mal in %. Der jeweils dazugehörige Wert muss dann berechnet werden und soll in rot erscheinen. "Theoretisch" etwa so:

Wenn L$3 gleich # dann M$3 / D$3 x 100
Wenn M$3 gleich # dann D$3 x L$3 / 100
Wenn L$3 und M$3 gleich # oder L$3 und M$3 gleich Zahl dann mach nichts

In dem Anhang sind die Daten schon berechnet ... noch von Hand.
Ich würde mich freuen wenn jemand einen Ansatz hat.

Danke und LG
Juwee
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    7,6 KB · Aufrufe: 20
Also wenn ich dich richtig verstehe, dann sollen die Felder in denen das "#" steht durch das Makro überschrieben werden!? Was mir an deiner Beschreibung komisch vorkommt ist, das du nur von den Zellen in Zeile 3 redest. Es soll doch bestimmt so sein das alle Zeilen durchlaufen werden und das die Berechnung in allen Zeilen durchgeführt werden soll.

Hier ein Beispiel womit du es lösen könntest:

Visual Basic:
'Diese Variable ist für die Zeilennummer
Dim zeile As Long
zeile = 1
'Hiermit werden die Farben rot und schwarz definiert
Dim black, red As Integer
black = RGB(0, 0, 0)
red = RGB(255, 0, 0)
'Diese Schleife wird fortgesetzt bis ins Spalte "D" kein Wert mehr vorhanden ist, muss eventuell auf deine Bedürfnisse angepasst werden!
Do While ActiveSheet.Range("D" & zeile) <> ""
'Zur Sicherheit die Schriftfarbe zuerst wieder auf schwarz stellen
  ActiveSheet.Range("L" & zeile).Font.Color = black
  ActiveSheet.Range("M" & zeile).Font.Color = black
'Wenn nur in Spalte "M" das Zeichen "#" steht berechnen und Farbe setzen
  If ActiveSheet.Range("M" & zeile) = "#" And ActiveSheet.Range("L" & zeile) <> "#" Then
  ActiveSheet.Range("M" & zeile) = (ActiveSheet.Range("D" & zeile) * ActiveSheet.Range("L" & zeile)) / 100
  ActiveSheet.Range("M" & zeile).Font.Color = red
'Wenn nur in Spalte "L" das Zeichen "#" steht berechnen und Farbe setzen
  ElseIf ActiveSheet.Range("L" & zeile) = "#" And ActiveSheet.Range("M" & zeile) <> "#" Then
  ActiveSheet.Range("L" & zeile) = (ActiveSheet.Range("M" & zeile) * ActiveSheet.Range("D" & zeile)) / 100
  ActiveSheet.Range("L" & zeile).Font.Color = red
  End If
'Zeilenzähler erhöhen
  zeile = zeile + 1

Loop
 
Zurück