Er zijn een paar manieren om op te geven dat een diagram moet worden weergegeven op een nieuw blad in de huidige werkmap, afhankelijk van hoe u het diagram maakt (bijvoorbeeld handmatig in Excel, met behulp van VBA-code of via een bibliotheek zoals Pandas in Python). Ik zal de gebruikelijke methoden bespreken:
1. Handmatig in Excel (GUI)
* Dit is het eenvoudigst als u rechtstreeks in de Excel-applicatie werkt.
1. Maak het diagram: Selecteer de gegevens die u in kaart wilt brengen. Ga naar het tabblad 'Invoegen' en kies het gewenste diagramtype (bijvoorbeeld Kolom, Cirkel, Lijn). Het diagram verschijnt in eerste instantie ingebed in het huidige blad.
2. Verplaats het diagram naar een nieuw blad:
* Methode 1 (klik met de rechtermuisknop): Klik met de rechtermuisknop op het diagramgebied. Kies 'Verplaats grafiek...'.
* Methode 2 (tabblad Grafiekontwerp): Selecteer het diagram. Het tabblad "Grafiekontwerp" verschijnt in het lint. Klik op de knop 'Grafiek verplaatsen' (meestal aan de rechterkant).
3. Dialoogvenster Diagram verplaatsen: In het dialoogvenster "Grafiek verplaatsen" selecteert u "Nieuw blad:" en geeft u het blad optioneel een naam. Klik op "OK".
2. VBA (Visual Basic voor toepassingen)
* Deze methode wordt gebruikt wanneer u het maken en plaatsen van diagrammen wilt automatiseren met behulp van VBA-code in uw Excel-werkmap.
```vba
Sub CreateChartOnNewSheet()
Dim cht als grafiek
Dim rng als bereik
Dim NewSht als werkblad
' Definieer het gegevensbereik
Set rng =ThisWorkbook.Sheets("Sheet1").Range("A1:B10") ' Bladnaam en bereik aanpassen
' Maak een nieuw werkblad om het diagram vast te houden
Set NewSht =ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) ' Voegt blad toe aan het einde
' U kunt ook het blad aan het begin toevoegen:
'Set NewSht =ThisWorkbook.Sheets.Add(Before:=ThisWorkbook.Sheets(1))
' Maak het diagram op het nieuwe blad
Stel cht =Grafieken in.Toevoegen
Met cht
.ChartType =xlColumnClustered ' Diagramtype aanpassen
.SetSourceData-bron:=rng
.Location Where:=xlLocationAsNewSheet, Name:=NewSht.Name ' Locatie instellen
.HasLegend =True ' Voorbeeld:voeg een legenda toe
.ChartTitle.Text ="Mijn diagramtitel" ' Voorbeeld:Stel de titel in
' Hier kunnen extra aanpassingsopties voor kaarten worden toegevoegd
Eindig met
' Optioneel:hernoem het nieuwe blad (al hierboven gedaan via Locatie)
'NewSht.Name ="MijnChartSheet"
' Optioneel:Activeer het kaartblad
NieuwSht.Activeren
' Objectvariabelen opruimen
Stel cht =Niets in
Stel rng =Niets in
Stel NewSht =Niets in
Einde sub
```
* Uitleg:
* `Dim cht As Chart`:Declareert een variabele die het grafiekobject moet bevatten.
* `Dim rng As Range`:Declareert een variabele die het databereik vasthoudt.
* `Dim NewSht As Worksheet`:Declareert een variabele die het nieuwe werkblad moet bevatten.
* `Set rng =ThisWorkbook.Sheets("Sheet1").Range("A1:B10")`:Definieert het gegevensbereik dat voor het diagram moet worden gebruikt. Belangrijk:wijzig `"Blad1"` en `"A1:B10"` in uw werkelijke bladnaam en gegevensbereik.
* `Set NewSht =ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))':Voegt een nieuw werkblad toe *na* het laatste blad in de werkmap. U kunt `Before:=ThisWorkbook.Sheets(1)` gebruiken om het toe te voegen als het *eerste* blad.
* `Set cht =Charts.Add`:Creëert een nieuw grafiekobject. Dit is de sleutel. `Charts.Add` creëert een diagram in de *ChartObjects* collectie.
* `.ChartType =xlColumnClustered`:Stelt het diagramtype in. Gebruik de juiste `xlChartType` constante (bijvoorbeeld `xlLine`, `xlPie`, `xlBarClustered`).
* `.SetSourceData Source:=rng`:Stelt de gegevensbron voor het diagram in.
* `.Location Where:=xlLocationAsNewSheet, Name:=NewSht.Name`:Dit is de cruciale regel. Het verplaatst het diagram naar een nieuw blad.
* `Where:=xlLocationAsNewSheet`:Specificeert dat het diagram op een nieuw blad moet worden geplaatst.
* `Name:=NewSht.Name`:Stelt de naam van het nieuwe blad in op de diagramnaam.
* Belangrijke overwegingen voor VBA:
* Foutafhandeling: Voeg foutafhandeling toe (bijvoorbeeld 'On Error GoTo ErrorHandler') om uw code robuuster te maken. Wat gebeurt er als het opgegeven blad niet bestaat of als het bereik ongeldig is?
* Objectvariabelen: Ruim uw objectvariabelen altijd op door ze op 'Niets' in te stellen (zoals weergegeven) om geheugen vrij te maken.
* Grafiekaanpassing: De regels `.ChartTitle.Text`, `.HasLegend`, enz. zijn slechts voorbeelden. VBA biedt uitgebreide mogelijkheden voor het aanpassen van elk aspect van een diagram (assen, labels, reeksopmaak, enz.). Verken het Excel VBA-objectmodel voor diagrammen.
* Beveiliging: Als uw werkmap VBA-code bevat, moet deze waarschijnlijk worden opgeslagen als een werkmap met macro's (`.xlsm`). Gebruikers moeten ook macro's in Excel inschakelen.
3. Python met Panda's en Openpyxl (of XlsxWriter)
* Dit wordt gebruikt als u met gegevens in Python werkt en Excel-grafieken wilt maken.
```python
importeer panda's als pd
openpyxl importeren
van openpyxl import Werkmap
vanuit openpyxl.chart importeer BarChart, Reference, Series
# Maak enkele voorbeeldgegevens
data ={'Categorie':['A', 'B', 'C', 'D'],
'Waarde':[10, 15, 13, 18]}
df =pd.DataFrame(gegevens)
# Maak een Pandas Excel-schrijver met openpyxl als engine
writer =pd.ExcelWriter("chart_example.xlsx", engine='openpyxl')
# Schrijf het DataFrame naar een blad met de naam 'Data'
df.to_excel(schrijver, bladnaam='Gegevens', index=False)
# Haal de werkmap- en werkbladobjecten op
werkboek =schrijver.boek
werkblad =writer.sheets['Gegevens']
# Maak een staafdiagram
diagram =Staafdiagram()
chart.type ="col"
diagram.stijl =10
chart.title ="Verkoop per categorie"
chart.y_axis.title ='Waarde'
chart.x_axis.title ='Categorie'
# Definieer het gegevensbereik (exclusief de koprij)
data_range =Referentie(werkblad, min_col=2, min_row=2, max_col=2, max_row=len(data['Categorie']) + 1) #Kolom B (Waarden), koptekst overslaan
categorieën =Referentie(werkblad, min_col=1, min_row=2, max_col=1, max_row=len(data['Categorie']) + 1) #Kolom A (Categorieën), koptekst overslaan
# Voeg de gegevensreeksen toe aan het diagram
series =Series(data_range, title_from_data=False) #Gebruik .title="" om de titel handmatig in te stellen
chart.append(serie)
chart.set_categories(categorieën)
# Maak een nieuw werkblad voor het diagram
chart_sheet =workbook.create_sheet("Grafiek")
# Voeg het diagram toe aan het nieuwe blad
chart_sheet.add_chart(chart, "A1") # Pas de celpositie indien nodig aan
# Sla het Excel-bestand op
schrijver.close()
print("Excel-bestand 'chart_example.xlsx' gemaakt met diagram op een nieuw blad.")
```
* Uitleg:
1. Bibliotheken importeren: Importeer `pandas`, `openpyxl` en de benodigde modules uit `openpyxl.chart`. Zorg ervoor dat deze bibliotheken zijn geïnstalleerd (`pip install pandas openpyxl`).
2. Gegevens aanmaken (Panda's): Creëer uw gegevens met Pandas DataFrames.
3. Excel Writer maken: Maak een `pd.ExcelWriter`-object en specificeer `openpyxl` als de engine. Hierdoor kunt u de `openpyxl`-functionaliteit gebruiken om het diagram te maken.
4. Gegevens naar blad schrijven: Schrijf het DataFrame naar een blad in het Excel-bestand.
5. Werkmap- en werkbladobjecten ophalen: Toegang tot de objecten 'werkmap' en 'werkblad' vanuit 'ExcelWriter'.
6. Grafiek maken: Maak een diagramobject (bijvoorbeeld 'BarChart').
7. Gegevensbereiken definiëren (referentie): Gebruik `openpyxl.chart.Reference`-objecten om het gegevensbereik voor het diagram te definiëren. Let goed op de parameters `min_col`, `min_row`, `max_col` en `max_row`.
8. Serie maken: Maak een `Series`-object uit het gegevensbereik. De 'reeks' vertegenwoordigt de gegevenspunten die moeten worden geplot.
9. Reeks aan diagram toevoegen: Voeg de `Serie` toe aan het `diagram'.
10. Categorieën instellen Stel de categorieën in
11. Nieuw blad maken: Maak een nieuw werkblad voor het diagram met `workbook.create_sheet("Chart")`. De naam van het nieuwe blad is "Grafiek".
12. Grafiek aan blad toevoegen: Gebruik `chart_sheet.add_chart(chart, "A1")` om het diagram aan het nieuwe blad toe te voegen. Het argument `"A1"` specificeert de cel linksboven waar het diagram zal worden geplaatst. Pas dit indien nodig aan.
13. Werkmap opslaan: Sla het Excel-bestand op met `writer.close()`.
* Belangrijkste punten voor Python:
* Bibliotheken: Je *moet* de benodigde bibliotheken installeren:`pip install pandas openpyxl` (of `pip install XlsxWriter` als je die engine kiest).
* Openpyxl versus XlsxWriter:
* `openpyxl`:Kan bestaande Excel-bestanden lezen en schrijven. Flexibel voor complexe opmaak.
* `XlsxWriter`:Uitstekend voor het maken van *nieuwe* Excel-bestanden, vooral grote. Vaak sneller dan `openpyxl` voor schrijven. Het kan echter geen bestaande bestanden wijzigen. Het belangrijkste verschil met dit probleem is dat `xlsxwriter` alleen diagrammen kan maken op het blad waar de gegevens zich bevinden.
* Gegevensbereiken: De `Referentie`-objecten zijn cruciaal. Zorg ervoor dat de waarden `min_col`, `min_row`, `max_col` en `max_row` correct zijn voor uw gegevens. Houd er rekening mee dat Excel-kolommen en -rijen op 1 zijn gebaseerd en niet op 0, zoals Python-lijsten.
* Grafiekaanpassing: `openpyxl` en `XlsxWriter` hebben uitgebreide opties voor het aanpassen van diagrammen (titels, assen, kleuren, labels, enz.). Raadpleeg hun documentatie.
Samengevat:
* Als u dit handmatig in Excel doet, is het dialoogvenster "Grafiek verplaatsen" het gemakkelijkst.
* Als u automatiseert met VBA, is de eigenschap `.Location` essentieel.
* Als je Python gebruikt, vereisen `openpyxl` en `XlsxWriter` meer code, maar bieden ze krachtige aanpassingsopties voor diagrammen. `openpyxl` is vereist bij het wijzigen van een bestaand Excel-bestand.
Kies de methode die het beste past bij uw behoeften en de omgeving waarin u werkt. Zorg ervoor dat u de codevoorbeelden aanpast zodat deze overeenkomen met uw specifieke gegevens, bladnamen en het gewenste diagramtype en uiterlijk. Vergeet niet om de benodigde bibliotheken te installeren als u Python gebruikt. |