Używam narzędzia Sumy częściowe do sporządzania szybkich raportów. Jednak raporty te są mało atrakcyjne wizualnie. Czy można jakoś wyróżnić kolorami wiersze podsumowujące w takim raporcie?
Używam narzędzia Sumy częściowe do sporządzania szybkich raportów. Jednak raporty te są mało atrakcyjne wizualnie. Czy można jakoś wyróżnić kolorami wiersze podsumowujące w takim raporcie?
Tak, można to zrobić, opis w załączniku.
Załączniki
W ramach uzupełnienia dodam, że jest również skrót do zaznaczenia tylko widocznych komórek. Należy zaznaczyć zakres, a następnie
L ALT + ;
Pozdrawiam.
Tomasz Grabowski.
Ja bym zaproponował do tego użycie formatowania warunkowego.
Zauważmy, że w kolumnie B po utworzeniu sum częściowych mamy podsumowanie wyników: Damian Suma, Damian Średnia itp.:
4. W nowym oknie wybieramy opcję "Użyj formuły do określenia..." i wpisujemy następującą formułę =Prawy($B1)="suma", oczywiście nie zapominamy o określeniu formatu:
5. Dla średniej utwórzmy analogicznie nową regułę formatowania warunkowego z formułą =Prawy($B1;7)="średnia".
Patrz załącznik.
Załączniki
Uzyskuję dane z zewnętrznych baz danych i często wymagają one sformatowania. Mogę podzielić się takim makrem, które wstawia odstęp i bolduje oraz obramowuje cały rząd, gdy napotka słowo TOTAL (można zmienić na SUMA). Wymaga przeróbek zgodnie z komentarzami.
Sub BoldAndInsertEmptyRow() Dim oListObj As ListObject Dim RowCnt As Long Dim r As Long Set oListObj = Worksheets("Oferta").ListObjects("Table3") 'change the sheet and table names accordingly Application.ScreenUpdating = False 'Format rows with totals: add empty row above, frame. RowCnt = oListObj.ListRows.Count For r = RowCnt To 1 Step -1 With oListObj.ListRows(r).Range 'If contains "TOTAL" - bold ent.row and add empty row below. If InStr(UCase((.Cells(1, 1).Value)), "TOTAL") > 0 Then .Font.Bold = True With .Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With With .Borders(xlEdgeBottom) .LineStyle = xlDouble .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThick End With If r < RowCnt Then oListObj.ListRows.Add Position:=r + 1, alwaysinsert:=True End If End If End With Next r Application.ScreenUpdating = True End Sub