Min und Max in einer Zeile farblich markieren
#1
Hallo ihr lieben.

Ich bin neu hier und auch was Excel betrifft habe ich nur Grundkenntnisse.

Fakt: Ich habe eine 3 Dateien, in der ich die Werte unserer Solaranlage aufschreibe. Ein Freund von mir hat das ganze mit Makros gemanaged, aber zum einen gibt es den Freund nicht mehr, zum anderen ist durch den Umstieg auf 2016 die Makro-Funktioon nicht mehr einwandfrei. Jetzt habe ich gehört, dass es leichter ist, meine Wünsche durch Funktionen genauso gut erzielen zu können und es sicherer als mit Makros ist, als sich VBA anzueignen.

Fakt ist:
Datei 1 zum ermitteln der Tageswerte (Leistung 2017), 12 Blätter von Januar bis Dezember. Zusätzlich ein Balkendiagramm.
Datei 2 zum ermitteln der Monatswerte im Jahresvergleich (Gesamtübersicht Tortendiagramm), mehrere Blätter für die Jahre von 2010 bis ..., Übersicht welcher Monat hat wieviel gebracht.
Datei 3 zum ermitteln der Jahreswerte (Jahresvergleiche), 1 Blatt, wo eine Tabelle (rechts Jahre, oben Monate) die entsprechenden Werte darstellt und dann über die Jahre die besten / schlechtesten Monate darstellt.

Bitte keine Gedanken über Sinn oder Unsinn dieser Aufteilung machen - mir ist keine bessere Lösung eingefallen. Über dien ganzen Wege, welche Tabelle wo welchen Wert ausliest und dann irgendwo einfügt, komme ich vielleicht später mal drauf zu sprechen, wenn ich nicht mehr weiter kommen sollte.

Ich weiß ein bißchen was über SVERWEIS und die WENN-Funktion, und werde mich da auch weiter durchkämpfen, aber zu meinem ersten Problem finde ich keine Lösung und hoffe auf eure Hilfe.

Problem:
In Datei 1 werden in der Zeile 1 die jeweiligen Tageswerte vom 1. des Monats bis zu letzten des Monats eingetragen.
Was das Makro bisher bewirkt hat war die farbliche Markierung der Zellen bester / schlechtester Tag:


Code:
If nCount > 1 Then
       ActiveSheet.Cells(1, nCelleLow).Interior.Color = vbRed
       ActiveSheet.Cells(1, nCelleLow).Font.Color = vbWhite
       ActiveSheet.Cells(1, nCelleHeigh).Interior.Color = vbGreen
End If


Also: bester Tag im vbgreen (was auch immer für ein grün das ist) mit STandardschriftfarne (also schwarz), schlechtester Tag in vbred mit weißer Schriftfarbe.

Ansatz:
Ich möchte eine Funktion einbauen, die die komplette Zeile 1 (A1 bis A[Monatsende]) umfasst, den MIN und MAX ermittelt und diese Zelle entsprechend farblich markiert.

Wie gesagt: ich bin noch recht frisch aber lernwillig ;)

Danke im Voraus!
Guido

PS: notfalls kann ich auch die drei wichtigen Dateien anhängen, Leistung 2017 wiederholt sich ja nur über die Jahre ;)
Top
#2
Hi.

als Formel in die Bedingte Formatierung   =MAX($A$1:$A$31)=A1
und bei Anwenden auf      $A$1:$A$31     eintragen.

Dann noch einmal nur mit Min.
Top
#3
Du bist mir drei Schritte zu schnell.

Bedingte Formatierung gefunden. Und bei welcher Regel trage ich es da ein? Hervorheben von Zellen oder obere/untere Werte? Habe leider keine Formel mit den entsprechenden Eingabemöglichkieten für die Parameter (Anwenden auf) gefunden.

Gruß
Guido
Top
#4
Hola,

Start - bedingte Formatierung - neue Regel - Formel zur Ermittlung....

Gruß,
steve1da
Top
#5
@steve1da:

Danke, das war der Stein des Anstoßes, der mir gefehlt hat.

Jetzt aber erstmal mit der Familie zu Abend essen, dann sehen wir mal weiter.
Melde mich Notfalls nachher (eher unwahrscheinlich, denn Familie geht vor) oder morgen wieder. Dann ist die Birne auch wieder frei :)

Gruß
Guido
Top
#6
Guten Morgen, ihr lieben.

Formel ist erstellt und formatiert, und es passt. Dafür schon einmal ein riesiges Dankeschön!

Melde mich dann beim nächsten Problem mit neuem Beitrag.

Lieben Gruß und schönen Tag noch
Guido


Edit: Wie bekomme ich die Regel auf die gesamte Arbeitsmappe übertragen? Muss ich sie für jedes Blatt neu erstellen oder gibt es da einen Trick?
Top
#7
(14.09.2017, 07:16)HGH schrieb: Wie bekomme ich die Regel auf die gesamte Arbeitsmappe übertragen? Muss ich sie für jedes Blatt neu erstellen oder gibt es da einen Trick?

Moin Guido!

Zunächst ein allgemeiner aber wichtiger Tipp:
Monatsblätter sind suboptimal!
Sie erschweren die Auswertung erheblich, wenn man keinen Crashkurz in Power Query absolvieren will.
Das gesamte Jahr (auch mehrere!) gehört in ein Blatt.
Dies kannst Du bequem nach Monat/Jahr filtern und mittels TEILERGEBNIS() auswerten.
Für Fortgeschrittene bietet sich eher ein Pivot-Table an.
In Deiner Excelversion gibt es MAXWENNS(), welches Du in der bed. Form. verwursten könntest, wenn Du zusätzlich eine Spalte mit dem Monat hättest.

Nun aber zu Deiner Frage:
Geht nur mittels VBA!
Schleife über alle Blätter und setzen der bed. Formatierung, die Du einmalig mit dem Rekorder aufzeichnen kannst.
(hier bereits "entmüllt")

Sub RPP()
Dim ws As Worksheet
For Each ws In Worksheets
  With ws.Range("A1:A31")
    .FormatConditions.Add Type:=xlExpression, Formula1:="=A1=MAX(A$1:A$20)"
    .FormatConditions(1).Interior.Color = 255
  End With
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
Elex schrieb mich per PN an, dass mein Makro bei ihm nicht läuft.
Deshalb hier mal meine Testdatei.

Gruß Ralf


Angehängte Dateien
.xlsm   bedFor.xlsm (Größe: 22,71 KB / Downloads: 3)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#9
(14.09.2017, 08:01)RPP63 schrieb: Das gesamte Jahr (auch mehrere!) gehört in ein Blatt.

Hallo
Aus Erfahrung: unbedingt über mehrere Jahre!!!
Ein Tag = Eine Zeile. Wenn auch noch die Stunden ersichtlich sein sollen: 1 Stunde = 1 Spalte.
Wieso?: Am Ende will man ja Jahresvergleiche, Monatsvergleiche und sogar Tagesvergleiche anstellen, Grafen erstellen usw. Und das ist alles viel einfacher, wenn die Daten in einer einzigen Tabelle sind. Es ist nur darauf zu achten, dass die Tabelle Jahresschlüssel, Monatsschlüssen und Tagesschlüssel vorsieht.
Gruss
Top
#10
Hi Ralf!

Im Anhang das Ergebnis des Tests.
In den Blättern wo vor dem Start des Makros eine andere Zelle als A1 ausgewählt ist, kommt es bei mir zu einer Formel mit falschen Bezügen.
Wenn A1 ausgewählt ist klappt es. 

Wenn ich zwischen For und With die zwei Zeilen einfüge klappt es bei mir auch.

For Each ws In Worksheets
    ws.Activate
    ws.Range("A1").Select
  With

Nutze Excel 2007.

Mfg Elex


Angehängte Dateien
.xlsm   bedFor Ergenis nach Makrostart mit F5.xlsm (Größe: 22,01 KB / Downloads: 4)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste