Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kreisdiagramm: Beschriftung positionieren

Kreisdiagramm: Beschriftung positionieren
10.08.2007 11:58:00
uli
Hallo Excel-Gemeinde
Folgendes Problem:
Habe in einem Dokument ca. 200 Kreisdiagramme die jeweils aus 4 "Kuchenstücken" bestehen. Per Makro werden nun die für die Kreisdiagramme relevanten Daten in bestimmte Zellen kopiert, die den Datenbereich für die Diagramme bilden (Natürlich für jedes Diagramm ein unterschiedlicher Bereich). Die Kuchenstücke sind mit Kategoriename, Wert und Prozentsatz beschriftet.
Jetzt kommt es oft vor, das zwei oder mehrere Kuchenstücke so klein sind, dass sich die Beschriftung überschneidet.
Gibt es eine Möglichkeit, dass per Makroanweisung zu verhindern?
Gruß
Uli

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
bitte Mappe hochladen (o.W.)
10.08.2007 13:46:00
Bernd
o.W.

AW: bitte Mappe hochladen (o.W.)
10.08.2007 15:16:00
uli
Hallo Bernd,
habe ich gerade versucht, klappt leider nicht. Die Datei (c:\Muster.xls) ruft den Fehler "ungültiger Dateiname" hervor. Wahrscheinlich ist sie mit fast 600kb aber auch einfach zu groß.
Habe daher ein Beispiel mit einem Kreisdiagramm hochgeladen.
https://www.herber.de/bbs/user/44941.xls
Das Programm, dass ich bastel, sieht im endeffekt so aus:
1. Eine Musterdatei enthalt ein Kreisdiagramm (und sonstigen Kram, der hier allerdings nicht so wichtig ist)
2. In der Hauptarbeitsmappe wird ermittelt, wie viele Kreisdiagramme benötigt werden
3. In der Musterdatei wird das Kreisdiagramm dementsprechend oft untereinander kopiert (Zeilen von 1 bis 40 werden kopiert und in Zeile 41,81,121 usw. eingefügt)
4. In der Musterdatei wird jedem Kreisdiagramm der Bereich für dessen Quelldaten zugeordnet
5. Aus einer dritten Datei werden die benötigten Quelldaten in den Bereich jedes einzelnen Diagrammes kopiert
In folgendem Makro sind die Schritte 2 bis 4 dargestellt. Da ich eh jedes Diagramm aktiviere, wäre es praktisch, wenn es eine Möglichkeit geben würde, durch eine Anweisung die Beschriftungen zu so verteilen, dass sie nicht übereinanderstehen. Ich hoffe meine Beispieldatei hilft da ein bisschen weiter. Eigentlich sollte es ja kein Unterschied sein, ob man es für ein oder max. 282 Diagramme macht.
Hier der Code für das Vorbereiten der Musterdatei (wird aus der Hauptdatei ausgeführt):

Sub Muster_vorbereiten()
Dim bereich As Range
Dim Zeilen As Integer
Dim dateiname As Variant
Dim durchlauf As Long
Dim diagramm As ChartObject
Dim DAnfang As Long
Dim DEnde As Long
Application.ScreenUpdating = False
durchlauf = 1
dateiname = ThisWorkbook.Name
Windows(dateiname).Activate
Set bereich = Sheets(3).Columns(1)
'Zähl der benötigten Musterseiten ermitteln
Zeilen = Application.WorksheetFunction.CountIf(bereich, "KP*") _
+ Application.WorksheetFunction.CountIf(bereich, "UP*")
'Kopieren der benötigten Musterseiten
For i = 1 To Zeilen - 1
On Error GoTo ende
Windows("Muster.xls").Activate
Cells(durchlauf, 1).Select
ActiveCell.Range("a1:i40").Select
Selection.Copy
Cells(durchlauf + 40, 1).Select
ActiveSheet.Paste
durchlauf = durchlauf + 40
Next i
On Error GoTo ende
Windows("Muster.xls").Activate
z = 1
For Each diagramm In ActiveSheet.ChartObjects
diagramm.Name = "Diagramm " & z
z = z + 1
Next
DAnfang = 34
DEnde = 37
'Datenbereich der Diagramme bestimmen
For n = 1 To Zeilen
Range("a1").Select
ActiveSheet.ChartObjects("Diagramm " & n).Activate
ActiveChart.ChartArea.Select
ActiveChart.SetSourceData Source:=Sheets("Präsentation A").Range("D" & DAnfang & ":e" &  _
DEnde), _
PlotBy:=xlColumns
DAnfang = DAnfang + 40
DEnde = DEnde + 40
Next n
Range("a1").Select
Windows(dateiname).Activate
ende:
Application.ScreenUpdating = True
End Sub


Anzeige
AW: bitte Mappe hochladen (o.W.)
11.08.2007 11:20:32
fcs
Hallo Uli,
es gibt keinen allgemeinen Befehl, der solche Text-Überlagerungen verhindert. Grundsätzlich kann man den Beschriftungstext per Makro positionieren (relativ zum Diagrammrahmen). Der aufgezeichnete Code für 1. und 4. Datenpunkt sieht beispielweise so aus:

Sub Beschriftung()
ActiveSheet.ChartObjects("Diagramm 3").Activate
ActiveChart.SeriesCollection(1).DataLabels.Select
ActiveChart.SeriesCollection(1).Points(1).DataLabel.Select
Selection.Left = 75
Selection.Top = 20
ActiveChart.SeriesCollection(1).Points(4).DataLabel.Select
Selection.Left = 81
Selection.Top = 156
End Sub


Jetzt müßte der Code so erstellt werden, dass in einer For...Next Schleife alle Datenpunkte des jeweiligen Diagramms abgearbeitet werden. Ausgehend vom 1. Datenpunkt, der immer oben im Uhrzeigersinn beginnt muss jetzt abhängig von der Größe des Kuchenstücks (Prozentwert) und der Position des Kuchenstücks (Summe der Prozentwerte der vorherigen Stücke + halber Prozentwert des Stücks) die Position der Beschriftung (Top und Left) festgelegt werden. Das dürfte einen ziemlichen Wust an Select Case bzw. If-Anweisungen ergeben.
Meiner Meinung nach ist es einfacher/übersichtlicher im Musterdiagramm die Führungslinien und Beschriftungsfelder einmal einigermassen ordentlich für kleine Werte zu positionieren. Den Kategorienamen würde ich in der Datenbeschriftung weglassen, insbesondere da diese ja zum Teil auch sehr lang sind.
Statt dessen die Legende unten anzeigen und das Legendsymbol vor den Beschriftungen anzeigen.
Gruß
Franz

Anzeige
AW: bitte Mappe hochladen (o.W.)
11.08.2007 17:17:00
uli
Hallo Franz,
die Idee mit der einzelnen Berechnung der Positionien hab ich auch schon gehabt. Habe sogar schon mit der Berechnung angefangen, aber auch schnell wieder aufgegeben. Das war wirklich viel zu umfangreich.
Werde jetzt wahrscheinlich deinen Tip mit der Legende verwenden und vorher die Beschriftung einigermaßen zurechtrücken. Das wird dann auch bei 90% der Diagramme passen, da die Werte 1 bis 3 meistens sehr klein sind und zusammen nur max. 20 % einnehmen. Da wo es nicht passt, muss man halt noch mal nachkorrigieren.
Vielen Dank für deine Hilfe.
Gruß
Uli

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige