Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierung

Bedingte Formatierung
30.08.2022 17:35:02
Rolf
Guten Tag zusammen
Ich habe eine Liste mit ca. 10'000 Einträgen über die Ausgestaltung von Infrastruktur unserer Firma. Die Excelliste besagt, was wir wo in welcher Ausprägung installiert haben. In der Spalte A ist der Ort angegeben und in der Spalte B bis O weitere Angaben zum Ort (Gemeinde, Postleitzahl, ...). In den nachfolgenden Spalten sind dann spezifische Angaben zu den installierten Infrastruktur enthalten (z.B. Haus, 100 Quadratmeter, 3 Stöckig, ... oder Garten, Blumen, guter Zustand). Da ein Ort mehrere Infrastruktur-Elemente haben kann (Haus, Garten, Garage, ...) kommt der Ort in der Spalte A sowie alle anderen Angaben der Spalten B bis O auf jeder Zeilen vor.
Mein Problem(chen): Wenn nun nach einem Kriterium gefiltert wird (z.B. Region), erscheinen mehrere Einträge zu mehreren Orten, z.B. total 15 Zeilen mit Bezug zu 3 Orten (also rund 5 Einträge pro Ort). Die Ortsangaben werden 15x angezeigt, obschon je Ort 1x ausreichen würde und übersichtlicher wäre.
Mein Wunsch: Gerne möchte ich die Tabellen (ggf. mittels VBA) so formatieren, dass jeweils nur die erste Ortsangabe sichtbar ist. Die weiteren Ortsangaben (des gleichen Orts) sollen nicht sichtbar sein, also z.B. weisse Schrift auf weissem Grund oder "ausgeblendet". Dies aber nur, wenn die Orte direkt über/unter einander sind. Sobald auf Grund einer Sortierung oder so die Orte nicht gruppiert sind, soll jeweils einfach die erste Orts-Beschriftung ersichtlich sein. Also: Ist Ort gleich wie in der Zelle darüber, dann Angaben A:O ausblenden (weiss auf weiss). Sind die Angaben unterschiedlich, dann normal anziegen.
Option: wenn die unterste und/oder oberste Zeile dann jeweils noch einen Trennstrich erhält, wird das ganze perfekt. So hätte ich pro Ort 1x die Ortsangaben und danach einfach leer bis zum nächsten Ort. Dank den Strichen ist auch klar, von wo bis wo der Ort gültig ist. Ähnlich der Funiktion "Zelle verbinden".
Uff - versteht man das? :-)
Ob es mittels VBA auf Knopfdruck so formatiert wird oder generell so ist, spielt mir keine Rolle. Einfach das, was einfacher ist. Die Benutzer filtern oft, können aber schon auch einen Button klicken, wenn es "schön" dargestellt sein muss.
Merci tuuusig!
Viele Grüsse
Rolf

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: schon möglich ...
30.08.2022 17:50:04
neopa
Hallo Rolf,
... evtl. sogar auch ohne VBA. Jedoch Deine Aussage: Ist Ort gleich wie in der Zelle darüber, dann Angaben A:O ausblenden ist mir unverständlich. Denn in den Spalten B:O können doch sicherlich auch andere Datenwerten stehen als in der Zeile darüber und zwar auch dann wenn in Spalte A der gleiche Ort steht.
Wie auch immer. Du solltest (D)eine Beispieldatei einstellen (können auch Dummydaten sein) mit mindestens 20 Datensätzen, an Hand dessen eine bed. Formatierung definieren kann, die dann Deiner noch zu präzisierender Zielstellung gerecht wird.
Gruß Werner
.. , - ...
Anzeige
AW: schon möglich ...
30.08.2022 18:14:27
Rolf
Hallo
Besten Dank, dass du dich meinem Anliegen annimmst.
Die Beispieldatei findet du hier: https://www.herber.de/bbs/user/154886.xlsx
Die Angaben in Spalte B bis O beziehen sich auf den Ort, also z.B. in welcher Gemeinde liegt der Ort, welche Nummer hat der Ort und ist somit immer identisch. Ob es sinnvoll ist, dass die Excelliste so aufgebaut ist, lassen wir mal dahingestellt, das ist halt einfach geschichtlich bedingt so und kann bzw. darf ich nicht ändern.
Viele Grüsse
Rolf
AW: dann teste mal ...
30.08.2022 19:03:22
neopa
Hallo Rolf,
... markiere A2:R### (Ende des Datenbereiches) und als erstes folgende bedingte Regel:
Formel: =$A2$A3 und Rahmenlinie unten
und als 2. zu erfassende bed. Regel:
Formel=$A2=$A1 und benutzerdefiniertes Zahlenformat (innerhalb der bed. Formatierung!): ;;;
Übernimm diese zunächst in der von Dir eingestellten Beispieldatei, damit Du das von Dir angestrebte in dieser zunächst nachvollziehen kannst.
Danach gleiches in einer Kopie Deiner Originaldatei zunächst als Test. Ein Test deshalb, weil ich nicht einschätzen kann, wie viel Zeit die bedingte Formatierung benötigt, wenn Du z.B. eine Sortierung nach dem Besitzer vornimmst bei einer derartigen großen Datei.
Gruß Werner
.. , - ...
Anzeige
AW: nachgetragen ...
30.08.2022 19:35:12
neopa
Hallo Rolf,
... hatte vergessen noch mitzuteilen, dass für meine 2. Regel (steht dann dort zu oberst) der Geltungsbereich in "Wird angewendet auf:" in Deiner Beispieldatei von =$A$2:$R$17 auf =$A$2:$O$17 abgeändert werden muss.
Gruß Werner
.. , - ...
AW: Bedingte Formatierung
30.08.2022 18:45:56
Daniel
Hi
geht über Bedingte Formatierung:
markiere den Bereich ab Zelle A2 und verwende folgende Formel als Regel:
=UND($A2=INDEX($A:$A;ZEILE()-1);TEILERGEBNIS(3;INDEX($A:$A;ZEILE()-1))=1)
als Format dann idealerweise das benutzerdefinierte Zahlenformat ";;;"
alternativ auch Schriftfarbe gleich Hintergrundfarbe, aber beim Zahlenformat funktioniert es unabhängig von der Hintergrundfarbe.
wenn du auch die Linie haben willst, müsstest du über die normale Formatierung jede Zeile mit einer Rahmen Linie oben versehen und diese dann in der bedingten Formatierung ausblenden.
Für die Rahmen musst du natürlich eine zweite bedingte Formatierung anlegen mit gleicher Formel, aber dem Gülitgeitsbereich auch für die restlichen Spalten.
Gruß Daniel
Anzeige
einfach nur alternativ VBA
31.08.2022 08:34:30
Pierre
Hallo Rolf,
obwohl ich mir jetzt nicht ganz sicher bin...meinst du
1. ob du A2:O2 komplett "ausgeblendet" haben willst, wenn A2 = A1 ist, oder
2. ob dann z. B. L2 sichtbar sein soll, wenn sich das von L1 unterscheidet?
Das habe ich ehrlich gesagt nicht ganz verstanden, alternativ(!) als VBA für Variante 1 z. B. so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Integer                '4.Doppelte Werte werden wie Hintergrund gefärbt
Application.ScreenUpdating = False                                  'Bildschirmaktualisierung aus
For k = 2 To ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row                                                                'Schleife von 2. Zeile bis zur letzten genutzten; Anfangsspalte anpassen
If Range("A" & k) = Range("A" & k - 1) Then                                         'wenn z. B. A2 gleich A1, dann Schriftfarbe wie Hintergund, Spalte anpassen
Range("A" & k, "O" & k).Font.Color = Range("A" & k, "O" & k).Interior.Color     'Schriftfarbe in A:O wird in Hintergundfarbe geändert, Spalten anpassen
End If
Next k
Application.ScreenUpdating = True                                   'Bildschirmaktualisierung ein
End Sub

Anzeige
AW: einfach nur alternativ VBA
01.09.2022 15:23:59
Rolf
Hallo
Der Code und die Beschreibung stimmt soweit. Das funktioniert auch mit der bedingten Formatierung. Bei der sichtbaren Zeile (also schwarze Schrift A-O), möchte ich einen Strich oben drüber haben. Das geht bei den Spalten A-O auch mit der bedingten Formatierung. Bei den Spalten P-Z fehlt dieser Strich jedoch. Der Strich muss einfach immer dann sein, wenn die Angabe in der Spalte A (A-O) sichtbar sind. Bei den in der Spalte A-O ausgeblendeten Zeilen soll kein Strich sein. Ziel ist, dass immer über die ganze Tabellenbreite ein Strich über dem Ort ist, der angezeigt wird und so die unterschiedlichen Orten optisch besser voneinander abgetrennt sind.
Viele Grüsse
Rolf
Anzeige
AW: einfach nur alternativ VBA
02.09.2022 10:02:05
Pierre
Hallo Rolf,
das lässt sich ganz einfach noch einbauen.
Hab das "Else" mal drin gelassen, aber auskommentiert, für den Fall, dass du evtl. später doch eine andere Linie zwischen gleichlautenden Einträgen haben willst (hier Punkt-Strich).

    If Range("A" & k)  Range("A" & k - 1) Then                                                        'wenn A2  A1, dann
With Range("A" & k, "Z" & k).Borders(xlEdgeTop)                                                  'über A- Linie
.LineStyle = xlContinuous                                                                        'durchgehend
.Weight = xlThin                                                                                 'dünn
End With
'Else                                                                                                'ansonsten
'Range("A" & k, "Z" & k).Borders(xlEdgeTop).LineStyle = xlDashDot                                 'Punkt-Strich-Linie zwischen den Zeilen, wenn A2=A1
End If
Obigen Code einfach hinter dem letzten "End If" des vorigen Makros einfügen.
Gruß Pierre
Anzeige
nochmal zusammengefasst...
02.09.2022 11:27:13
Pierre
Hallo Rolf,
ich war noch nicht ganz auf der Höhe eben.
Hier mal beides zusammengefasst, probier das mal aus.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Integer
Application.ScreenUpdating = False                                  'Bildschirmaktualisierung aus
For k = 2 To ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row                             'Schleife von 2. Zeile bis zur letzten genutzten; Anfangsspalte anpassen
If Range("A" & k) = Range("A" & k - 1) Then                                         'wenn z. B. A2 gleich A1, dann Schriftfarbe wie Hintergund, Spalte anpassen
Range("A" & k, "O" & k).Font.Color = Range("A" & k, "O" & k).Interior.Color     'Schriftfarbe in A:O wird in Hintergundfarbe geändert, Spalten anpassen
End If
If Range("A" & k)  Range("A" & k - 1) Then                                       'wenn A2  A1, dann
With Range("A" & k, "Z" & k).Borders(xlEdgeTop)                                'über A- Linie
.LineStyle = xlContinuous                                                      'durchgehend
.Weight = xlThin                                                               'dünn
End With
Next k
Application.ScreenUpdating = True                                   'Bildschirmaktualisierung ein
End Sub
Gruß Pierre
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige