PDA

Vollständige Version anzeigen : Dynamisches Diagramm zu erstellen


Joao
24.09.2016, 18:20
Hallo,
ich habe eine Tabelle die wie folgt aufgebaut ist.
<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" style="font-family:Calibri,Arial; font-size:11pt; background-color:#ffffff; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:75px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /><col style="width:29px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >A</td><td >B</td><td >C</td><td >D</td><td >E</td><td >F</td><td >G</td><td >H</td><td >I</td></tr><tr style="height:58px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >1</td><td >&nbsp;</td><td style="background-color:#92d050; text-align:center; ">Kunde 1</td><td style="text-align:center; ">Kunde 2</td><td style="background-color:#92d050; text-align:center; ">Kunde 3</td><td style="text-align:center; ">Kunde 4</td><td style="text-align:center; ">Kunde 5</td><td style="text-align:center; ">Kunde 6</td><td style="background-color:#92d050; text-align:center; ">Kunde 7</td><td style="text-align:center; ">Kunde 8</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >2</td><td style="background-color:#00b0f0; text-align:right; ">Produkt 1</td><td style="text-align:center; ">8</td><td style="text-align:center; ">0</td><td style="text-align:center; ">8</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >3</td><td style="text-align:right; ">Produkt 2</td><td style="text-align:center; ">6</td><td style="text-align:center; ">2</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:right; ">Produkt 3</td><td style="text-align:center; ">7</td><td style="text-align:center; ">4</td><td style="text-align:center; ">4</td><td style="text-align:center; ">0</td><td style="text-align:center; ">4</td><td style="text-align:center; ">0</td><td style="text-align:center; ">4</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td style="text-align:right; ">Produkt 4</td><td style="text-align:center; ">3</td><td style="text-align:center; ">6</td><td style="text-align:center; ">6</td><td style="text-align:center; ">1</td><td style="text-align:center; ">6</td><td style="text-align:center; ">0</td><td style="text-align:center; ">6</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td style="background-color:#00b0f0; text-align:right; ">Produkt 5</td><td style="text-align:center; ">5</td><td style="text-align:center; ">8</td><td style="text-align:center; ">8</td><td style="text-align:center; ">0</td><td style="text-align:center; ">8</td><td style="text-align:center; ">0</td><td style="text-align:center; ">8</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td style="text-align:right; ">Produkt 6</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td><td style="text-align:center; ">0</td></tr><tr style="height:18px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td style="text-align:right; ">Produkt 7</td><td style="text-align:center; ">8</td><td style="text-align:center; ">2</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td><td style="text-align:center; ">2</td><td style="text-align:center; ">0</td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4.8 </a>

Ist es möglich ein Dynamisches Diagramm zu erstellen?
=> Mit Dynamisch meine ich, es soll die 10 Kunden mit den meisten Bestellungen auflisten, und die 10 beliebtesten Produkten.

Das wäre dann:
=> Kunde 1,Kunde 3, Kunde 7, Kunde 9, Kunde 11, Kunde 16, Kunde 17, Kunde 19, Kunde 21, Kunde 28
=> Produkt 1, Produkt 5, Produkt 11, Produkt 12, Produkt 14, Produkt 15, Produkt 16, Produkt 17, Produkt 18, Produkt 21

Das Diagramm soll sich automatisch ändern/aktualisieren.
Ist das möglich?

Danke vorab
Joao

erpe
25.09.2016, 18:07
Hallo,
sollte möglich sein. Vermutlich mit einer Zwischentabelle.
Kunde 1 > 77 Best. Produkt 21
Kunde 28 > je 11 Best. bei Proukt 2 und 14
kunde 24 hat auch 11 Best. bei Produkt 7. Taucht aber in der Auflistung nicht auf. Ist dass ein Fehler oder so gewollt?

Zur Lösung: Index, Vergleich, Max und/oder Rang sind Funktionen, die dir weiterhelfen können.

Gruß
Rainer

xlph
25.09.2016, 22:14
...teils mit Formel teils mit VBA

Joao
25.09.2016, 23:58
Hallo xlph,

danke für deine Hilfe.

Deine Datei sieht gut aus.

Nur leider verstehe ich sie nicht genau, um die Funktionen auf meine Datei auszuführen.
Bei meine Funktioniert es nicht. :(

Wärst du so nett die Funktionen zu erklären.

PS: Ich brauche 2 Grafiken.
1. Sortiert nach Kunden
2, Sortiert nach Produkten

Danke

mathieu_91
26.09.2016, 09:24
Hallo,

soll der Diagrammbereich auch immer gleich groß bleiben?

Ansonsten musst du mir dem Formel Manager dyn. Variablen definieren.

BEREICH.VERSCHIEBEN bzw. INDEX sind da zwei Funktionen, die du dafür brauchen wirst.

Grüße

Mathieu

Beverly
26.09.2016, 10:46
Hi,

ich weiß nicht, ob ich dich richtig verstanden habe - schau dir einfach mal das angehängte Beispiel an.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

xlph
26.09.2016, 10:53
@Beverly

schöne Lösung

...mit 2. Diagramm

Beverly
26.09.2016, 11:18
Ist es möglich (ohne VBA) in beide x- und y-Ausrichtung die Datenquelle der Diagramme dynamisch zu halten?


Es lässt sich nur die Anzahl der Datenpunkte pro Datenreihe dynamisch mittels definierter Namen ändern: man weist ja nicht dem Diagramm selbst den Datenbereich zu sondern definiert die Namen für jede Datenreihe einzeln. Somit lässt sich die Anzahl an Datenreihen an sich auf diesem Weg leider nicht dynamisch gestalten. Das funktioniert (soweit mir bekannt ist) nur bei einer formatierten Tabelle und diese ist im gegebenen Fall nicht relevant, weil es sich um eine durch Formeln erstellte Wertetabelle handelt.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Joao
26.09.2016, 13:09
Hallo xlph,
Hallo Beverly,

beide Versionen haben Ihren Reitz.

Wegen der Übersicht habe ich den Wert bei „Produkt21/Kunde 1“ von 77 auf 5 geändert.


Wegen der Sortierung habe ich mich vielleicht etwas unklar ausgedrückt.

Wenn ich aus der „Kunden“ Sicht mir die Tabelle anschaue, wünsche ich es mir wie folgt:
Kunde 1 : Produkt 8, Produkt 20, Produkt 1, Produkt 7, Produkt 12,….
Kunde 3 : Produkt 17, Produkt 1, Produkt 5, Produkt 12, Produkt 21,….
Kunde 21 : Produkt 2, Produkt 10, Produkt 6, Produkt 14, Produkt 18,….
Kunde 19 : Produkt 10, Produkt 15, Produkt 14, Produkt 19, Produkt 13,….
Kunde 9 : Produkt 1, Produkt 12, Produkt 5, Produkt 16, Produkt 4,….

Wenn ich aus der „Produkt“ Sicht mir die Tabelle anschaue, wünsche ich es mir wie folgt:
Produkt 14 : Kunde 10, Kunde 15, Kunde 28, Kunde 17, Kunde 19,….
Produkt 18 : Kunde 4, Kunde 10, Kunde 15, Kunde 21, Kunde 28,….
Produkt 5 : Kunde 2, Kunde 3, Kunde 5, Kunde 7, Kunde 9,….
Produkt 17 : Kunde 2, Kunde 3, Kunde 10, Kunde 15, Kunde 21,….
Produkt 1 : Kunde 9, Kunde 1, Kunde 3, Kunde 16, Kunde 17,….


Danke

Beverly
26.09.2016, 13:49
Hi,

wenn jeder Kund eine andere Reihenfolge an Produkten bzw. jedes Produkt eine andere Reihenfolge an Kunden zeigen soll, musst du für jeden Kunden ein extra Diagramm mit der Produktabfolge bzw. für jedes Produkt ein extra Diagramm mit der Kundenabfolge anlegen, denn man kann entweder die Zuordnung in horizontaler oder vertikaler Richtung anzeigen - ein Mischmasch aus beidem geht m.E. nicht.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

xlph
26.09.2016, 17:19
...so vielleicht

Beverly
27.09.2016, 08:29
...das entspricht genau meiner Lösung aus Beitrag 26.09.2016 10:46, nur dass in meinen Diagrammen noch der Ausgangswert 77 für die Kombination "Produkt21/Kunde 1" steht und nicht zu 5 geändert ist, da dies erst in einem späteren Beitrag vom TE vorgeschlagen wurde.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

xlph
27.09.2016, 11:46
Ja, deine Lösung basiert auf Formeln, meine auf VBA.

Nur der Unterschied, dass die Top-Zahl dynamisch ist.
Das lässt sich mit Formeln nicht realisieren, außer dass eine bestimmte Anzahl
an Datenreihen vordefiniert wird. Dynamisch ist das dann aber auch nicht.

wick62
27.09.2016, 12:46
Hallo Joao,

hier noch eine andere Variante.
Makro startet bei Änderung des Wert in A1

Gruß Hans

Beverly
27.09.2016, 14:31
Ja schon, aber es ist keine andere Lösung für die Diagrammdarstellung, so wie der TE sie wünscht.

Außerdem: => Mit Dynamisch meine ich, es soll die 10 Kunden mit den meisten Bestellungen auflisten, und die 10 beliebtesten Produkten.

Es geht also nicht um eine dynamische Erweiterung/Reduzierung sondern eine veränderliche Darstellung in Abhängigkeit von der Rangfolge.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

xlph
27.09.2016, 15:02
ok, du nimmst es also sehr genau.

Ja schon, aber es ist keine andere Lösung für die Diagrammdarstellung, so wie der TE sie wünscht.

Da hast du recht.

Es geht also nicht um eine dynamische Erweiterung/Reduzierung sondern eine veränderliche Darstellung in Abhängigkeit von der Rangfolge.

Da hast du auch recht.

Beverly
27.09.2016, 16:52
Selbstverständlich sollte man es nach Möglichkeit genau nehmen, denn mehrdeutig auslegbare Antworten können zu falschen Vorstellungen führen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

xlph
27.09.2016, 17:43
Vielleicht habe ich das Thema ja auch falsch interpretiert?!

Der Fragesteller wird schon sehen welches Ergebnis passt und welches nicht.

Stell dir vor, ich weiß auch nicht alles und mache Fehler.

Joao
02.10.2016, 16:28
Hallo,

erstmal DANKE an alle die geholfen haben.


xlph: deine Version "Tabelle-Diagra.xlsm" hat mir am besten zugesagt.

Ich habe sie an meine Master Datei angepasst.

Doch jetzt habe ich 2 kleines Probleme:

1.) egal welche Anzahl ich auswähle, bekomme immer -1 angezeigt.

2.) Auch bei der Sortierung stimmt etwas nicht, es wird immer der 1 (höchste Anzahl) nicht berücksichtigt.

Kannst du da nochmal prüfen, und mir helfen.

Danke

Code zum auswählen:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "B3" Then

zwischen0.Range("B2").Value = Target.Value
zwischen1.Range("B2").Value = Target.Value
zwischen2.Range("B2").Value = Target.Value
End If

End Sub
Code Grafik 1: Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "B2" Then

Application.ScreenUpdating = False

With Range("B2").CurrentRegion
.EntireRow.Hidden = False
.EntireColumn.Hidden = False
On Error Resume Next
.Rows(.Rows.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireColumn.Hidden = True
.Columns(.Columns.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = True
On Error GoTo 0
End With

Application.ScreenUpdating = True

End If

End Sub
Code Grafik 2: Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "B2" Then

Application.ScreenUpdating = False

With Range("B2").CurrentRegion
.EntireRow.Hidden = False
.EntireColumn.Hidden = False
On Error Resume Next
.Rows(.Rows.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireColumn.Hidden = True
'.Columns(.Columns.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = True
On Error GoTo 0
End With

Application.ScreenUpdating = True

End If

End Sub


Code Grafik 3: Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "B2" Then

Application.ScreenUpdating = False

With Range("B2").CurrentRegion
.EntireRow.Hidden = False
.EntireColumn.Hidden = False
On Error Resume Next
'.Rows(.Rows.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireColumn.Hidden = True
.Columns(.Columns.Count).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = True
On Error GoTo 0
End With

Application.ScreenUpdating = True

End If

End Sub

xlph
03.10.2016, 12:06
...so vielleicht....

Joao
05.10.2016, 17:24
Hallo xlph,

wie ich geschrieben habe, passt deine Version "Tabelle-Diagra.xlsm" am besten zu dem was ich machen soll.
Doch ich habe dieses Problem:
1.) egal welche Anzahl ich auswähle, bekomme immer -1 angezeigt.

2.) Auch bei der Sortierung stimmt etwas nicht, es wird immer der 1 (höchste Anzahl) nicht berücksichtigt.

Kannst du da nochmal prüfen, und mir helfen.

Danke

xlph
05.10.2016, 18:30
Ja, die liefert falsche Ergebnisse.

Nimm die Datei aus Beitrag #20.

Joao
06.10.2016, 00:31
Doch leider kann ich diese nicht für mich umsetzen.

1. beide Grafiken "Produkte" & "Kunde" sollen unterschiedliche grössen angaben haben dürfen.
2. Design muss "Gestapelte Säule" und "Formatvorlage 26"

xlph
06.10.2016, 11:37
Design muss "Gestapelte Säule" und "Formatvorlage 26"

Das kannst du manuell setzen, wird per Code nicht beeinflusst.