Herbers Excel-Forum - das Archiv

Automatisch mehrere Diagramme erzeugen

Bild

Betrifft: Automatisch mehrere Diagramme erzeugen
von: Sinan

Geschrieben am: 04.01.2007 11:40:34
Hallo,
ich möchte gerne für viele kleine Verteilungen in einer Excel-Datei automatisch Diagramme erstellen und diese rechts von der Verteilung platzieren. Hoffentlich könnt ihr mir dabei helfen bzw. ein paar Tipps dazu geben.
In einer Excel-Datei befinden sich sehr viele Variablen (bis zu 1000) mit ihren Merkmalsausprägungen und den dazugehörigen LN-Werten (bis zu 20). Diese Datei hat immer den gleichen Aufbau und ist nicht veränderlich (es dürfen keine Zeilen oder Spalten gelöscht werden!).
Ich möchte nun, dass Excel mir für jede Variablenverteilung automatisch ein kleines Diagramm erstellt, damit ich sofort Tendenzen bzw. Zusammenhänge erkennen kann und somit brauchbare Variablen von unbrauchbaren unterscheiden kann. Zum besseren Verständnis habe ich in der Beispiel-Datei manuell ein paar Diagramme erstellt. Die Diagrammwerte beziehen sich auf die Werte in Spalte D.
https://www.herber.de/bbs/user/39360.xls
Die Schwierigkeit ist nun alle Diagramme automatisch (per Makro) zu erstellen und diese übersichtlich darzustellen, da es auch Variablen mit nur zwei Ausprägungen gibt. Ich habe mir gedacht, dass man die Größe Des Diagramms von der Anzahl der Ausprägungen abhängig machen könnte.
Wäre echt super, wenn ihr ein paar Tipps für mich hättet.
Vielen Dank im voraus.
Viele Grüße
Sinan
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Herbert H.
Geschrieben am: 04.01.2007 15:14:30
Hallo Sinan,
welches konkrete Problem hast du bei der Erstellung
eines Diagramms ?
gruß Herbert
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Sinan

Geschrieben am: 04.01.2007 15:37:22
Hallo Herbert,
das Problem ist, dass ich für 1000 Variablenverteilungen unmöglich alle Diagramme manuell erstellen kann. Mit Diagrammen in VBA habe ich jedoch auch noch nie gearbeitet. Bei meinen ersten Versuchen diese Aufgabe durch VBA zu lösen, bin ich kläglich gescheitert.
Ich habe bisher noch nicht herausgefunden, wie ich eine Schleife erstelle, die sämtliche Variablenverteilungen durchgeht und jedes Mal dazu ein kleines Diagramm erstellt (wie in meiner Bsp. Datei). Ein Bild sagt mehr als 10 Zahlen mit 5 Nachkommastellen, deswegen benötige ich das, um schneller und besser brauchbare von unbrauchbaren Variablen zu unterscheiden.
Ich hoffe, dass Du mit meiner Antwort mehr anfangen kannst.
Viele Grüße
Sinan
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Herbert H.

Geschrieben am: 04.01.2007 20:52:20
Hallo Sinan,
so wie du das beschreibst,hast du dich beim angegebenen Level
aber doch etwas geirrt...!
ich weiß schon,es fehlt zumindest ein Level!
probier das einmal:
Userbild
gruß Herbert
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Sinan

Geschrieben am: 05.01.2007 12:56:33
Hallo Herbert,
vieeelen Dank für Deine Hilfe und den Code! Dein Programm hat mir sehr geholfen, denn jetzt habe ich genau das, was ich wollte: Durch einen Klick alle Charts zu den Variablenverteilungen! P-E-R-F-E-K-T!!! Habe Dein Programm noch ein bißchen abgeändert, aber auch sonst lief es makellos!
Mit meinem angegebenen Level habe ich mich wohl ein bißchen weit aus dem Fenster gelehnt, aber in die Level "Makro-Recoder" bzw. "Grundkenntnisse VBA" wollte ich mich auch nicht einordnen, da bin ich schon weiter...
Da ich Dir sehr dankbar bin, möchte ich gerne noch kurz erläutern, wie toll dieses Programm wirklich ist:
In der beigefügten Datei findest Du a.) mehrere Variablenverteilungen und b.) Dein Programm: https://www.herber.de/bbs/user/39406.xls
Die Variablenverteilungen enthalten in der Spalte A, B und C auch noch andere Informationen, da es sich hier nicht einfach nur um Verteilungen handelt, sondern um SPSS-Syntax für die Statistiksoftware SPSS. Wenn Du das Makro ausführst, werden alle Diagramme für die Verteilungen erstellt und man kann jetzt viel bequemer und schneller herausfinden, welche Variablen brauchbar sind und welche nicht. Ein perfektes Beispiel ist die Variable BEST1 ab Zeile 340. Man sieht deutlich, dass BEST1 linear ansteigt. Ein echt tolles Teil... ;-)
Ich werde das Programm noch weiter an meine Belange anpassen, da ich die Syntax und das Diagramm der unbrauchbaren Variablen komplett löschen muss, um zu einer "Netto"-Syntax zu gelangen. Vielleicht hast Du ja auch hier eine Idee? ;-)
In jedem Fall... merci beaucoup.
Viele Grüße
Sinan
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Herbert H.

Geschrieben am: 05.01.2007 16:17:16
hallo Sinan,
wenn du das noch einbaust,wird das Diagramm plus Daten
in Zeile 340 gelöscht...drei andere aber auch noch...

Public Sub diagr_einf()
linear As Boolean
linear = True
'------
'------
        For i = ez To lz
            If Cells(i + 1, 4) < Cells(i, 4) Then linear = False
        Next
        If linear = True Then
            Call diagr_löschen(ez - 2, lz + 2)
        End If
    linear = True
Loop
End Sub
Function diagr_löschen(ez%, lz%)
Dim shp As Shape, rng As Range
Set rng = ActiveSheet.Range("a" & ez & ":i" & lz)
rng.ClearContents
For Each shp In ActiveSheet.Shapes
  If Not Intersect(shp.TopLeftCell, rng) Is Nothing Then shp.Delete
Next
End Function
     gruß Herbert
Bild

Betrifft: AW: Automatisch mehrere Diagramme erzeugen
von: Sinan

Geschrieben am: 09.01.2007 13:16:23
Hallo Herbert,
leider konnte ich Dir nicht früher antworten, da ich ein verlängertes Wochenende hatte und erst heute wieder gekommen bin.
Vielen Dank für Deine Hilfe! Habe mir Dein Programmcode mal genauer angeschaut und finde es sehr interessant. Sofort verwenden kann ich es aber leider nicht, müsste da noch einiges abändern, da ich bei der Definition der Linearität flexibel sein muss: So ist bspw. der Code
If Cells(i + 1, 4) < Cells(i, 4) Then linear = False
vollkommen richtig, geht aber nur in die eine Richtung (positive Korrelation / folgende Werte größer als vorherige). Negative Korrelationen werden nicht berücksichtigt (folgende Werte kleiner als vorherige). Dies könnte ich aber durch eine kleine mit UND und ODER verknüpfte If-Bedingung vorab abfangen bspw. durch die zusätzliche Abfrage, ob Cells(i, 4) kleiner oder größer null ist. Daraus bilde ich mir dann die positive oder negative Linearität. Bis hier hin ist das alles kein Problem und absolut logisch.
Aus meiner praktischen Erfahrung jedoch weiß ich, dass die Daten niemals oder eher selten absolut linear sind, d. h. es kann sein, dass die Werte aus den Verteilungen zu Beginn schön linear an- bzw. absteigen, aber meistens gibts dann noch einen kleinen Knick, irgendwelche Ausreisser, die die 100%ige Linearität kaputt machen, obwohl ein schöner Trend zu erkennen ist. Dies ist genau der Grund bzw. das Problem, warum ich noch manuell entscheiden muss, welche Variablen gut und welche schlecht sind.
Habe mir gedacht, dass man das evtl. mit einer Trendlinie umgehen kann, wie in den Diagrammoptionen einstellbar. Was meinst Du?
Ich werde das Programm wahrscheinlich aber so abändern, dass ich in der Excel-Mappe den Variablennamen in der Spalte A anklicken kann und der Code mir dann die komplette Verteilung und das zugehörige Diagramm löscht. Ist halt halb-manuell, aber hilft mir in so Fern weiter, dass ich die "Netto"-Syntax ganz einfach nach SPSS kopieren und verwenden kann.
Vielen Dank für all Deine Hilfe und Tipps.
Viele Grüße
Sinan
 Bild
Excel-Beispiele zum Thema "Automatisch mehrere Diagramme erzeugen"
Automatische Datumformatierung unterdrücken Automatisch Sicherungsdatei erstellen
Automatisches Komplettieren einer Zelleingabe Zelleingaben automatisch auf volle 1,2-Teile runden
Tabelle nach Datumseintrag automatisch sortieren Eingaben in B:D automatisch mit 6 multiplizieren
Zelleingabe automatisch in Kopfzeile übernehmen Nach Zelleingabe automatische Sortierung
Automatische Sortierung bei Zelleintrag Min- und Max-Werte automatisch markieren