den här artikeln visar hur lätt det är att skapa ett scatter-diagram med sitt plotområde uppdelat horisontellt och vertikalt i fyra regioner. Regionerna är åtskilda av diagramaxlarna, och dessa axlar kan placeras där det behövs för att avgränsa kvadranterna.
![Quad-diagram med axlar som Kvadrantgränser](https://peltiertech.com/images/2015-07/QuadAxisChart.png)
jag har skrivit en handledning som visar hur man skapar ett Excel-diagram med färgad Kvadrantbakgrund, vilket var mer komplicerat, eftersom det använde staplade områden och sekundära axlar för att få den färgade bakgrunden. Detta är mycket enklare att skapa och underhålla, och tjänar ungefär samma syfte.
här är provet X och Y data, med beräknade medelvärden, och den initiala XY scatter diagram. Vi kommer att placera axlarna vid respektive medelvärden för X-och Y-data, men du kan placera dem varhelst det är vettigt i din analys.
![Quad Chart by Axes-Data och diagram](https://peltiertech.com/images/2015-07/QuadAxesDataAndChart1.png)
vi måste flytta axlarna i detta diagram. Dubbelklicka på den horisontella axeln eller välj den horisontella axeln och tryck på Ctrl+1 (siffra en) för att öppna åtgärdsfönstret Formatera axel (visas här, Excel 2013) eller formatera Axeldialogruta (fungerar ungefär samma i tidigare Excel-versioner). Under Axelalternativ >vertikala Axelkorsningar väljer du alternativet Axelvärde och anger X-genomsnittet i rutan, som visas.
![format Axis Task Pane-Axis korsar vid](https://peltiertech.com/images/2015-07/FmtAxisCrossesAt.png)
resultatet visas nedan till vänster. Upprepa för den vertikala axeln, nedanför höger.
![Quad Chart by Axes-Position axlar](https://peltiertech.com/images/2015-07/QuadAxesCharts2.png)
dessa axeletiketter är helt i vägen, men det är lätt att flytta dem. Formatera varje axel (öppna åtgärdsfönstret eller dialogrutan som ovan) och under etiketter > Etikettposition väljer du låg i rullgardinsmenyn.
![formatera Axis Task Pane-Label Position Low](https://peltiertech.com/images/2015-07/FmtAxisLabelsLow.png)
nu är dessa etiketter längs kanterna på diagrammet, där de gör mer nytta än skada (nedan till vänster). Du kan göra en liten mängd formatering för att göra kvadranterna sticker ut lite tydligare. I diagrammet nedan till höger har jag använt en ljusare grå nyans för rutlinjerna, och jag har använt en mörkare färg, i själva verket samma färg som markörerna, för axellinjens färg.
![Quad diagram av axlar - Positionsetiketter och formatera](https://peltiertech.com/images/2015-07/QuadAxesCharts3.png)
det är lätt att använda VBA för att placera axlar och axeletiketter, med hjälp av en enkel rutin som den som visas nedan. Denna rutin placerar etiketterna och använder sedan medelvärdena som beräknats i kalkylbladet för att placera axellinjerna.
Sub AxesAsQuadBoundaries1() With ActiveChart With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("A17").Value2 End With With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("B17").Value2 End With End WithEnd Sub
nästa rutin hoppar över kalkylbladets beräkningar, istället tar medelvärdena för X-och Y-värdena som plottas i diagrammet för att placera axellinjerna.
Sub AxesAsQuadBoundaries2() Dim vData As Variant With ActiveChart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
du kan även använda kalkylbladshändelser för att flytta diagramaxlarna. Mina X-och Y-värden beräknades med =RANDBETWEEN(2,14)
, så när kalkylbladet beräknar (t.ex. genom att trycka på funktionsknappen F9) ändras värdena. Jag kan utnyttja denna beräkning händelse enligt följande.
- högerklicka på fliken kalkylblad och välj Visa kod från popup-menyn. VB-redigeraren öppnas med en kodmodul som motsvarar kalkylbladet.
- Välj kalkylblad från den vänstra rullgardinsmenyn högst upp i modulen ny kod.
- Välj beräkna från den högra rullgardinsmenyn.
- ange koden som visas.
![Worksheet_Calculate händelse för att hålla axlarna i Position](https://peltiertech.com/images/2015-07/VBA_Wksht_Calc.png)
här är koden så att du inte behöver skriva allt själv. Kopiera och klistra in i kalkylbladets kodmodul.
Private Sub Worksheet_Calculate() Dim vData As Variant With Me.ChartObjects(1).Chart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
beroende på detaljerna i din kalkylbladsmodell kan du använda Worksheet_Calculate
, Worksheet_Change
, Worksheet_PivotTableUpdate
, eller andra händelseprocedurer för att uppdatera diagrammet.