Formulering av problemet
Jeg vil at kolonnene på histogrammet (eller skivene på sektordiagrammet, osv.) automatisk skal ha fargen som ble brukt til å fylle de tilsvarende cellene med kildedata:
For å forutse de overraskede og indignerte ropene fra individuelle kamerater, bør det bemerkes at fargen på fyllingen i diagrammet selvfølgelig også kan endres manuelt (høyreklikk på kolonnen - Punkt/serieformat (Formater datapunkt/serie) osv. – ingen argumenterer. Men i praksis er det mange situasjoner hvor det er enklere og mer praktisk å gjøre dette direkte i cellene med data, og da skal diagrammet da males på nytt automatisk. Prøv for eksempel å angi fyll etter område for kolonnene i dette diagrammet:
Jeg tror du forstår ideen, ikke sant?
Oppløsning
Ingenting annet enn en makro kan gjøre dette. Derfor åpner vi Visual Basic-editor fra fanen utvikler (Utvikler – Visual Basic Editor) eller trykk på hurtigtasten Alt + F11, sett inn en ny tom modul gjennom menyen Sett inn – modul og kopier teksten til en slik makro der, som vil gjøre alt arbeidet:
Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" Exit Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formel m = Split(f, ",") Sett r = Range(m(2)) For i = 1 Til r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Neste i Neste j End Sub
Du kan nå lukke Visual Basic og gå tilbake til Excel. Det er veldig enkelt å bruke den opprettede makroen. Velg diagrammet (kartområde, ikke plottområde, rutenett eller kolonner!):
og kjør makroen vår med knappen Makroer tab utvikler (Utvikler – Makroer) eller med en hurtigtast Alt + F8. I samme vindu, ved hyppig bruk, kan du tilordne en tastatursnarvei til makroen ved å bruke knappen parametere (Alternativer).
PS
Den eneste fluen i salven er umuligheten av å bruke en lignende funksjon for tilfeller der fargen er tildelt cellene i kildedataene ved å bruke betingede formateringsregler. Visual Basic har dessverre ikke et innebygd verktøy for å lese disse fargene. Det er selvfølgelig visse "krykker", men de fungerer ikke for alle tilfeller og ikke i alle versjoner.
- Hva er makroer, hvordan bruker du dem, hvor skal du sette inn makrokode i Visual Basic
- Betinget formatering i Excel 2007-2013
- Hva er nytt i diagrammer i Excel 2013