Färg på ett diagram från celler med dess data

Formulering av problemet

Jag skulle vilja att kolumnerna i histogrammet (eller skivorna i cirkeldiagrammet, etc.) automatiskt ska ha den färg som användes för att fylla motsvarande celler med källdata:

För att förutse de förvånade och indignerade ropen från enskilda kamrater bör det noteras att färgen på fyllningen i diagrammet naturligtvis också kan ändras manuellt (högerklicka på kolumnen - Punkt/serieformat (Formatera datapunkt/serie) etc. – ingen argumenterar. Men i praktiken finns det många situationer då det är enklare och bekvämare att göra detta direkt i cellerna med data, och då ska diagrammet sedan målas om automatiskt. Försök till exempel att ställa in fyllningen efter region för kolumnerna i det här diagrammet:

Jag tror att du förstår idén, eller hur?

Lösning

Inget annat än ett makro kan göra detta. Därför öppnar vi Visual Basic-redigerare från fliken utvecklare (Utvecklare – Visual Basic Editor) eller tryck på kortkommandot Alt + F11, infoga en ny tom modul genom menyn Infoga – Modul och kopiera texten till ett sådant makro där, vilket kommer att göra allt arbete:

Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" Exit Sub End If Set c = ActiveChart För j = 1 Till c.SeriesCollection.Count f = c.SeriesCollection(j).Formel m = Split(f, ",") Set r = Range(m(2)) För i = 1 Till r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Nästa i Nästa j End Sub  

Du kan nu stänga Visual Basic och återgå till Excel. Att använda det skapade makrot är mycket enkelt. Välj diagrammet (diagramområde, inte plotområde, rutnät eller kolumner!):

och kör vårt makro med knappen Makron fliken utvecklare (Utvecklare – Makron) eller med ett kortkommando Alt + F8. I samma fönster, vid frekvent användning, kan du tilldela en tangentbordsgenväg till makrot med knappen parametrar (Alternativ).

PS

Den enda flugan i salvan är omöjligheten att använda en liknande funktion för fall där färgen tilldelas cellerna i källdata med villkorliga formateringsregler. Tyvärr har Visual Basic inget inbyggt verktyg för att läsa dessa färger. Det finns naturligtvis vissa "kryckor", men de fungerar inte för alla fall och inte i alla versioner.

  • Vad är makron, hur man använder dem, var man infogar makrokod i Visual Basic
  • Villkorlig formatering i Excel 2007-2013
  • Vad är nytt i diagram i Excel 2013

Kommentera uppropet