Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
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
Inhaltsverzeichnis

Diagramm Mehrfachnennungen zusammen fassen

Diagramm Mehrfachnennungen zusammen fassen
23.03.2021 15:10:03
Andreas
Hi zusammen,
in meiner Tabelle, ist in dem Tabellenblatt "Anwendung" ein Diagramm, welches sich variabel verändert.
Die gelbe Tabelle passt sich an je nach dem, welche Filteroptionen gewählt werden. Die Datenquelle zur Tabelle ist im Tabellenblatt "DQ" hinterlegt.
Mein Problem ist das Diagramm. Im Beispiel, habe ich schon Filter so ausgewählt, das zu sehen ist, das eine Artikelkonstellation 5 mal in der Tabelle vorkommt. Im Diagramm wird diese Konstellation jetzt leider auch 5 mal wieder gegeben anstatt nur 1x.
Hat jemand eine Idee?
Vielen Dank im Voraus
https://www.herber.de/bbs/user/145047.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ein Möglichkeit wäre ...
23.03.2021 15:34:21
neopa
Hallo Andreas,
... die Auswertungsformel in B17:L315 entsprechend abzuändern, dass dort schon die Daten zusammengefasst werden. Allerdings sind es ja auch verschiedene Auftragsnummern und sollen dort nicht zusammengefasst werden. Oder?
Dann könnte man diese so ermittelten Daten in einer weiteren Tabelle zusammenfassen, die dann die Grundlage für dein Diagramm bilden würde.
Gruß Werner
.. , - ...

AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 08:23:11
Beverly
Hi Andreas,
das kann man mit einem Makro lösen, indem man die gefilterten Daten in ein zusätzliches Tabellenblatt kopiert, in einer Schleife über alle kopierten Einträge läuft und alle doppelten löscht. Das Diagramm bezieht man dann auf diese Hilfstabelle, die jeden Eintrag nur noch einmalig enthält:
Sub DiaBearbeiten()
Dim lngZeilen As Long
Dim lngLetzte As Long
Dim lngZaehler As Long
Dim chrDia As Chart
Dim serReihe As Series
Dim rngBereich As Range
' Bildschirmaktualisierung aus
Application.ScreenUpdating = False
' Tabelle1 leeren
Worksheets("Tabelle1").Cells.ClearContents
With Worksheets("Anwendung")
' letzte Zeile an Daten ermitteln
lngLetzte = .ListObjects(1).DataBodyRange.Rows.Count + 16
' Spalten P:Q sichtbare Zellen nach Tabelle1 kopieren
.Range(.Cells(17, 16), .Cells(lngLetzte, 18)).SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Tabelle1").Range("A1")
' Anzahl an sichtbaren Zeilen ermitteln
lngZeilen = .ListObjects(1).DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible). _
Count
With Worksheets("Tabelle1")
' Schleife über alle Zeilen und alle doppelten Einträge zu eliminieren
For lngZaehler = lngZeilen To 1 Step -1
' Anzahl der laufenden Zelle > 1 dann Zelle leeren
If Application.CountIf(.Range(.Cells(1, 1), .Cells(lngZaehler, 1)), .Cells( _
lngZaehler, 1)) > 1 Then _
.Range(.Cells(lngZaehler, 1), .Cells(lngZaehler, 1)).ClearContents
Next lngZaehler
' leere Zeilen löschen
.Range(.Cells(1, 1), .Cells(lngZeilen + 1, 1)).SpecialCells(xlCellTypeBlanks). _
EntireRow.Delete
lngZaehler = Application.CountA(.Columns(1))
' Bereich für Diagramm festlegen
Set rngBereich = Union(.Range(.Cells(1, 1), .Cells(lngZaehler, 1)), .Range(.Cells(1, _
3), .Cells(lngZaehler, 3)))
End With
' bezogen auf das Diagramm
With .ChartObjects(1).Chart
' Datenbereich zuweisen
.SetSourceData Source:=rngBereich
End With
End With
' Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub
Es ist vom Prinzip her derselbe Ablauf, wie ich dir bereits in diesem Beitrag https://www.herber.de/forum/archiv/1820to1824/t1821435.htm#1821435 vorgeschlagen hatte, nur dass es dort um das Ausblenden von Rubriken unter bestimmten Bedingungen im Diagramm ging.

Beverly's Excel - Inn

Anzeige
AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 14:05:00
Andreas
Hallo Karin,
Danke für deine Antwort.
Bin was VBA angeht, leider eine 0.
Habe deine Programmierung kopiert und in meiner Datei eingefügt, es funktioniert aber nicht.
"das kann man mit einem Makro lösen, indem man die gefilterten Daten in ein zusätzliches Tabellenblatt kopiert"
Bedeutet das, dass ich jedes Mal, nach dem ich gefiltert habe, die Daten zuerst in ein neues Tabellenblatt kopieren muss?
Das Ziel ist es eigentlich, das die Artikelkonstellationen mit Ihrer Häufigkeit angezeigt werden nachdem man die Filter benutzt hat.
Vielen Dank vorab
Gruß Andreas

Anzeige
AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 14:53:25
Beverly
Hi Andreas,
Zitat: "Bedeutet das, dass ich jedes Mal, nach dem ich gefiltert habe, die Daten zuerst in ein neues Tabellenblatt kopieren muss?"
Ja und nein - du musst gar nichts machen außer das Makro starten, denn genau das Kopieren und Zusammenfassen für das Diagramm übernimmt das Makro.
Zitat: "Das Ziel ist es eigentlich, das die Artikelkonstellationen mit Ihrer Häufigkeit angezeigt werden nachdem man die Filter benutzt hat."
Das geht nicht, weil es beim Filtern kein Ereignis gibt, welches man mit VBA benutzen könnte, um das Makro automatisch zu starten - du musst das Makro also jedesmal von Hand neu ausführen.
https://www.herber.de/bbs/user/145075.xlsm
Übrigens wäre es schön, wenn du dich in dem anderen Thread auch noch einmal äußern würdest...

Beverly's Excel - Inn

Anzeige
AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 15:18:32
Andreas
Hallo Karin,
deine Lösung ist 1a. Wenn ich das so hinbekommen würde wäre ich mehr wie glücklich.
"das kann man mit einem Makro lösen, indem man die gefilterten Daten in ein zusätzliches Tabellenblatt kopiert, in einer Schleife über alle kopierten Einträge läuft und alle doppelten löscht."
Das Makro welches du erstellt hast, habe ich in deiner Beispieldatei gefunden. Wie bekomme ich das jetzt in meine richtige Datei?
Wie hast du das gemacht, dass die gefilterten Werte in dem neuen Tabellenblatt angezeigt werden?
Da sind ja gar keine Formeln enthalten. Gehe davon aus, dass das das Makro war?
Mit Makros kenne ich mich leider auch nicht aus =/
Dritte und letzte Frage, wie programmiert man diesen schönen Knopf der das alles auslöst?
Vielen Dank vorab
Gruß Andreas

Anzeige
AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 15:55:54
Andreas
Hallo Karin,
habe die VBA in meine Datei kopiert, das Makro über die Entwicklertools gestartet, der Knopf fehlt mir noch =).
In meiner Datei hab ich die Spalten P und Q vertauschen müssen, das ist aber in der VBA geändert.
Allerdings hab ich irgendetwas falsch gemacht, es kommt immer Fehler 400.
Würdest du dir das bitte anschauen und mir sagen was da schief gelaufen ist?
https://www.herber.de/bbs/user/145081.xlsm
Vielen Dank vorab
Gruß Andreas

AW: Diagramm Mehrfachnennungen zusammen fassen
24.03.2021 16:40:11
Beverly
Hi Andreas,
die Spalten für die zu kopierenden Daten sind in deiner Originalmappe andere - ich habe das im Code jetzt entsprechend geändert (du hattest es nur im Kommentar zu der Codezeile geändert): es müssen die Spalten P:Q kopiert werden und das sind die Spaltennummern 16 und 17 (habe ich angepasst). Außerdem kopiert das Makro plötzlich nicht mehr die Werte sondern die Formeln (habe ich geändert) - der geänderte Code sieht nun so aus:
Sub DiaBearbeiten()
Dim lngZeilen As Long
Dim lngLetzte As Long
Dim lngZaehler As Long
Dim chrDia As Chart
Dim serReihe As Series
Dim rngBereich As Range
' Bildschirmaktualisierung aus
Application.ScreenUpdating = False
' Tabelle1 leeren
Worksheets("Tabelle1").Cells.ClearContents
With Worksheets("Anwendung")
' letzte Zeile an Daten ermitteln
lngLetzte = .ListObjects(1).DataBodyRange.Rows.Count + 16
' Spalten Q:R sichtbare Zellen kopieren
.Range(.Cells(17, 17), .Cells(lngLetzte, 18)).SpecialCells(xlCellTypeVisible).Copy
' in Tabelle1 ab A1 nur die Werte einfügen
Worksheets("Tabelle1").Range("A1").PasteSpecial Paste:=xlValues
' Anzahl an sichtbaren Zeilen ermitteln
lngZeilen = .ListObjects(1).DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible). _
Count
With Worksheets("Tabelle1")
' Schleife über alle Zeilen und alle doppelten Einträge zu eliminieren
For lngZaehler = lngZeilen To 1 Step -1
' Anzahl der laufenden Zelle > 1 dann Zelle leeren
If Application.CountIf(.Range(.Cells(1, 1), .Cells(lngZaehler, 1)), .Cells( _
lngZaehler, 1)) > 1 Then _
.Range(.Cells(lngZaehler, 1), .Cells(lngZaehler, 1)).ClearContents
Next lngZaehler
' leere Zeilen löschen
.Range(.Cells(1, 1), .Cells(lngZeilen + 1, 1)).SpecialCells(xlCellTypeBlanks). _
EntireRow.Delete
lngZaehler = Application.CountA(.Columns(1))
' Bereich für Diagramm festlegen
Set rngBereich = .Range(.Cells(1, 1), .Cells(lngZaehler, 2))
End With
' bezogen auf das Diagramm
With .ChartObjects(1).Chart
' Datenbereich zuweisen
.SetSourceData Source:=rngBereich
End With
End With
' Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub

Den "Knopf" oder Schaltfläche erstellst du wie folgt: Register: Entwicklertools -&gt Befehlsgruppe: Steuerelemente -&gt Schalter: Einfügen. Und dann ganz oben links das rechteckige Element "Schaltfläche (Formularsteuerelement)" einmal anklicken, im Tabellenblatt zu der Position gehen wo du das Steuerelement einfügen willst (Cursor ist dabei als Kreuz dargetstellt), Linksklick und Maustaste gedrückt halten - dann kannst du die Maus nach rechts und unten bewegen und das Steuerelement erstellen. Wenn du danach die Maustaste loslässt erscheint ein neues Menü - dort klickst du das Makro "Tabelle3!DiaBearbeiten" an und drückst Ok. Damit ist die Schaltfläche mit dem Makro verknüpft. Ich hoffe ich habe nichts vergessen...

Beverly's Excel - Inn

Anzeige
AW: Diagramm Mehrfachnennungen zusammen fassen
25.03.2021 10:34:51
Andreas
Hi Karin,
was soll ich sagen, es funktioniert alles wie es soll : )
Vielen Dank für deine Lösungsvorschläge, investierte Zeit und Geduld.
Gruß und eine schöne Restwoche
Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige