Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1828to1832
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

Tabellenblatt nach Vorgaben formatieren?

Tabellenblatt nach Vorgaben formatieren?
05.05.2021 21:27:21
Dino
Hallo Leute,
ich muss eine Tabelle leider jeden Tag in vielen Dateien formatieren.
1. Ab START-Zeile "KGR" + 1 bis letzte benutzte Zelle der Spalte A, sollen die Inhalte in Spalten A und B bis nächstem Zellwert gelöscht werden, der anders ist als der vorheriger Zellwert.
2. Ab START-Zeile "KGR" + 1 bis letzte benutzte Zelle der Spalte A, sollen die Inhalte in Spalten C ähnlich wie im Punkt 1 gelöscht werden. Wobei in diesem Fall eine Zeile übersprungen werden soll, sofern in Spalte B ein Zellinhalt steht.
3. Es soll ein roter Rahmen (außen), um die Zellen zwischen einzelnen KGR (Kostengruppen) der Spalte A dargestellt werden.
4. Ab START-Zeile "KGR" + 1 bis letzte benutzte Zelle der Spalte A, sollen die Rahmen für Spalten A, B und C wie im Arbeitsblatt "NACHHER" entfallen.
Leider ist mein Anliegen vielleicht schwer zu erklären, von daher habe ich eine Beispieldatei https://www.herber.de/bbs/user/146021.xlsx mit wenigen Zeilen hier beigefügt.
In der Datei habe ich zwei Arbeitsblättern "VORHER" und "NACHHER" zum besserem Verständnis erstellt.
Ich hoffe ihr könnt mir bitte behilflich sein, dies per VBA zu lösen.
Herrlichen Dank im Voraus!
Gruß Dino

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 10:10:03
Pierre
Hallo Dino,
zufälligerweise habe ich mir mal eine ganz ähnliche Datei gebaut.
Ich würde allerdings möglichst in den Spalten A:C die Werte stehen lassen und die Schriftfarbe nur an den Hintergrund anpassen.
Zumindest für mich war es auf diese Weise viel einfacher, das zu programmieren.
Die letzte genutzte Zeile ermittel ich in diesem Fall über Spalte F.
Ich lade dir die Mappe mit dem gesamten Code inkl. Anmerkungen hoch.
Falls Fragen sind, melde dich einfach.
https://www.herber.de/bbs/user/146028.xlsm
Gruß Pierre
Anzeige
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 12:59:16
Dino
Hallo Pierre,
zunächst vielen Dank für dein Makro. Ich habe es getestet und es sieht schon mal sehr gut aus. :-)
Die Werte in Spalten A:C sollen wie im Arbeitsblatt "NACHHER" sein. Ich habe gesehen, in deinem Falls sind diese nicht gelöscht.
Die Farben sind nach einzelnen Gewerken festgelegt.
'RGB-Farben:
'Zahl 410: (196,215,155)
'Zahl 420: (141,180,226)
'Zahl 430: (230,184,183)
'Zahl 440: (183 222,232)
'Zahl 475: (221,217,196)
Gruß Dino
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 13:51:11
Pierre
Hallo Dino,
dann tausche den 1. Code bitte mit dem folgenden aus:

Zeilenzahl = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row     'Ermittlung der letzten genutzten Zeile, 6=F
For i = 7 To Zeilenzahl                                             'Schleife von 7. Zeile bis zur letzten genutzten
If Range("A" & i).Value = "410" Then                            'wenn '410' in einer Zelle der Spalte A steht,
Range("A" & i, "C" & i).Interior.Color = RGB(196, 215, 155) 'dann in der Zeile in Spalten A:C Hintergrundfarbe
End If
Next i
Dies musst du natürlich analog für alle weiteren Farben machen, aber das schaffst du bestimmt auch alleine ;-)
Bzgl. deinem Wunsch nach gelöschten Werten: Ist das zwingend erforderlich? Wie gesagt, auf diesem Wege wäre es einfacher und man sieht die Inhalte ja nicht. Wenn es unbedingt sein muss, dass die Zellen leer sind, dann muss ich noch etwas basteln, ansonsten könntest du halt mit meinem Makro arbeiten.
Gruß Pierre
Anzeige
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 14:24:13
Pierre
Ich mein...ich bin zwar bei Weitem kein Profi in VBA, aber wenn die doppelten Inhalte in A:C gelöscht werden sollen, zieht das bei so ziemlich allen anderen Aktion weitere Probleme mit sich, weswegen eine Änderung in jedem Abschnitt nötig wird.
Die roten Linien tauchen auf, wo sie nicht auftauchen sollen, die Hintergrundfarbe wäre nicht durchgehend usw. usf.
Das wäre ein ziemlich großer Aufwand (für mich), den ich mir sparen kann, wenn du damit leben könntest, dass die doppelten Inhalte einfach in den Zellen stehen bleiben, aber dadurch, dass die Schriftfarbe gleich der Füllfarbe ist, würde man immer nur die erste neue Nummer sehen (wie es in meiner bereits hochgeladenen Mappe der Fall ist).
Gruß Pierre
Anzeige
Natürlich in meinem Code B und nicht C ... (owT)
06.05.2021 14:33:37
Pierre
AW: Natürlich in meinem Code B und nicht C ... (owT)
07.05.2021 10:13:20
Dino
Hallo Pierre,
vielen Dank! Ich wünsche dir einen schönen Tag.
Gruß Dino
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 10:46:33
MCO
Hallo Dino!
Jetzt hab ich mir die Arbeit gemacht, jetzt kriegst du auch von mir die Lösung. Dennoch will ich die nur parallel zu Pierres Lösung aufführen.
Ich hoffe, du kommst damit zurecht:

Sub Layout_anpassen()
Dim Startzeile As Long
Dim i As Long
Dim z As Long
Dim lz As Long
Dim cl As Long
Dim startwert As String
Startzeile = 7
lz = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For i = Startzeile To lz
startwert = Cells(i, "C") & Cells(i, "A")
For z = i + 1 To lz + 1
If Cells(z, "C") & Cells(z, "A")  startwert Then
If i + 1  startwert Then
If i + 1 
Gruß, MCO
Anzeige
AW: Tabellenblatt nach Vorgaben formatieren?
06.05.2021 13:02:17
Dino
Hallo MCO,
zunächst vielen Dank auch an dich für das Makro. Deine Lösung finde ich auch interessant. :-)
Es fehlt mir nur noch die Einbindung der Farben für die Spalten A und B wie im Arbeitsblatt "NACHHER".
Füge ich diese unterhalb von Range("C" & i + 1 & ":C" & z - 1).ClearContents 'Bereich löschen ein?
Die Farben sind nach einzelnen Gewerken festgelegt.
'RGB-Farben:
'Zahl 410: (196,215,155)
'Zahl 420: (141,180,226)
'Zahl 430: (230,184,183)
'Zahl 440: (183 222,232)
'Zahl 475: (221,217,196)
Gruß Dino
AW: Tabellenblatt nach Vorgaben formatieren?
07.05.2021 07:07:02
hary
Moin
Hatte nur mitgelesen. Hier mein Loesungsvorschlag. Probier mal.

Sub Versuch()
Dim rngLast As Range, rngFirst As Range, zelle As Range
Dim i As Long
Application.ScreenUpdating = False
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
Set rngLast = Range("A:A").Find(what:=Cells(i, 1), after:=Range("A1"), searchdirection:=xlPrevious)
Set rngFirst = Range("A:A").Find(what:=Cells(i, 1), after:=Range(rngLast.Address), searchdirection:=xlNext)
With Range(rngFirst, rngLast)
.Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 8).BorderAround 1, 3, 22
.Cells(2).Resize(rngLast.Row - rngFirst.Row, 2).ClearContents
Select Case .Cells(1)
Case 410: .Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 2).Interior.Color = RGB(196, 215, 155)
Case 420: .Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 2).Interior.Color = RGB(141, 180, 226)
Case 430: .Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 2).Interior.Color = RGB(230, 184, 183)
Case 440: .Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 2).Interior.Color = RGB(183, 222, 232)
Case 475: .Cells(1).Resize(rngLast.Row - rngFirst.Row + 1, 2).Interior.Color = RGB(221, 217, 196)
End Select
For Each zelle In .Offset(, 2)
If Application.CountIf(Range(zelle, Cells(rngLast.Row, 3)), zelle) > 1 Then
Range(zelle.Offset(1, 0), Cells(rngLast.Row, 3)).Replace what:=zelle, replacement:=""
End If
Next
End With
i = rngLast.Row + 1
Set rngLast = Nothing
Set rngFirst = Nothing
Next
End Sub
gruss hary
Anzeige
AW: Tabellenblatt nach Vorgaben formatieren?
07.05.2021 10:12:44
Dino
Hallo Hary,
vielen Dank! Ich wünsche dir einen schönen Tag.
Gruß Dino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige