Kleur van 'n grafiek uit selle met sy data

Formulering van die probleem

Ek wil graag hê dat die kolomme op die histogram (of skywe op die sirkelgrafiek, ens.) outomaties die kleur moet hê wat gebruik is om die ooreenstemmende selle met die brondata te vul:

In die vooruitsig op die verraste en verontwaardigde krete van individuele kamerade, moet daarop gelet word dat die kleur van die invul in die diagram natuurlik ook met die hand verander kan word (regskliek op die kolom - Punt/reeks formaat (Formateer datapunt/reeks) ens – niemand stry nie. Maar in die praktyk is daar baie situasies wanneer dit makliker en geriefliker is om dit direk in die selle met data te doen, en dan moet die grafiek dan outomaties oorgeverf word. Probeer byvoorbeeld om die vul volgens streek vir die kolomme in hierdie grafiek te stel:

Ek dink jy kry die idee, reg?

Oplossing

Niks behalwe 'n makro kan dit doen nie. Daarom maak ons ​​oop Visual Basic redakteur vanaf die blad ontwikkelaar (Ontwikkelaar – Visual Basic Editor) of druk die sleutelbordkortpad Alt + F11, voeg 'n nuwe leë module deur die spyskaart in Voeg in – Module en kopieer die teks van so 'n makro daar, wat al die werk sal doen:

Sub SetChartColorsFromDataCells() If TypeName(Seleksie) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" Exit Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formule m = Split(f, ",") Stel r = Reikwydte(m(2)) Vir i = 1 To r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Volgende i Volgende j End Sub  

Jy kan nou Visual Basic toemaak en terugkeer na Excel. Die gebruik van die geskepde makro is baie eenvoudig. Kies die grafiek (grafiekarea, nie plotarea, rooster of kolomme nie!):

en hardloop ons makro met die knoppie Macros tab ontwikkelaar (Ontwikkelaar - Makro's) of met 'n sleutelbordkortpad Alt + F8. In dieselfde venster, in geval van gereelde gebruik, kan jy 'n sleutelbordkortpad aan die makro toewys deur die knoppie te gebruik Grense (Opsies).

PS

Die enigste vlieg in die salf is die onmoontlikheid om 'n soortgelyke funksie te gebruik vir gevalle waar die kleur aan die selle van die brondata toegeken word met behulp van voorwaardelike formateringreëls. Ongelukkig het Visual Basic nie 'n ingeboude instrument om hierdie kleure te lees nie. Daar is natuurlik sekere “krukke”, maar dit werk nie vir alle gevalle nie en ook nie in alle weergawes nie.

  • Wat is makro's, hoe om dit te gebruik, waar om makro-kode in Visual Basic in te voeg
  • Voorwaardelike formatering in Excel 2007-2013
  • Wat is nuut in kaarte in Excel 2013

Lewer Kommentaar