Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1616to1620
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

Jeweils neues Diagramm fuer eine Spalte weiter

Jeweils neues Diagramm fuer eine Spalte weiter
02.04.2018 20:51:30
Simon
Hallo Forum,
bei unserer Grossserienfertigung kommt es regelmaessig zu Beanstandungen.
Dabei interessiert mich immer ob die Prozessparameter des ausgelieferten Produktes statistische Ausreisser waren.
Am einfachsten moechte ich das visuell mit einem Diagramm fuer jeden Prozessparameter darstellen.
Leider sind das so viele dass die einzelne Erzeugung zu aufwaendig waere. Meine Vorstellung ist, dass automatisch Diagramme erzeugt werden bei dem die x-Achse gleich bleibt nur die Daten der y-Achse eine Spalte weiterspringen.
Hier mal meine Beispiel-Datei:
https://www.herber.de/bbs/user/120812.xlsx
Ich waere dankbar wenn jemand Erfahrung mit dieser Art von Problemstellung hat.
Danke und Gruss,
Simon

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mathematische Definition
02.04.2018 22:21:40
Fennek
Hallo Simon,
es ist schon spät und mehr als einen ersten Eindruck gibt es von mir heute nicht mehr.
Als erstes muss man (du) eine mathematische Definition der Ausreißer definieren. Nach Augenmaß käme "wenn der Abstand der sortierten Werte zwischen dem 1. und 2. größer als 20% ist".
Dann darf es nur EINEN Ausreißer geben, ansonsten müßten Mittelwert und Varianz genutzt werden (Ausreißer sind &lt 3 sigma).
Mit der Excel-Funktion "Large" (dt: kgrößte) können die Abstände einfach berechnet werden.
Mit VBA beliebig viele Chart automatisch zu erstellen ist ein eher kleines Problem.
mfg
Anzeige
AW: Beispiel
03.04.2018 13:45:04
Fennek
Hallo,
der folgende Code färbt die Ausreißer, damit können die Punkte im Chart im nächsten Schritt markiert werden.

Sub T_1()
'Datei: Simon Contineltal Her.xlsx
For i = 3 To 5
Abw_MWgt3Sigma (i)
Next i
End Sub
Sub Abw_MWgt3Sigma(Sp)
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction
With ActiveSheet.UsedRange
MW = WSF.Average(.Columns(Sp))
StD = WSF.StDev_P(.Columns(Sp))
For i = 2 To Cells(Rows.Count, Sp).End(xlUp).Row
If Abs((.Cells(i, Sp) - MW) / StD) > 3 Then .Cells(i, Sp).Interior.Color = vbRed
Next i
End With
'Debug.Print Sp, MW, StD
End Sub
mfg
Anzeige
Wie werden die Ausreißer gekennzeichnet?
03.04.2018 09:41:02
Beverly
Hi Simon,
ist es tatsächlich so, dass die Ausreißer immer in der selben Zeile liegen? Müssen die Ausreißer erst noch irgendwie festgelegt werden oder gelten immer die Zellen, die von Hand gelb gefärbt wurden?


AW: Wie werden die Ausreißer gekennzeichnet?
03.04.2018 20:33:37
Simon
Sorry, ich hab mich total missverstaendlich ausgedrueckt.
Ich dachte ich gebe ein paar Hintergrund-Informationen, was zur totalen Verwirrung gefuehrt hat :-(
1. Mir geht es nicht um die mathematische Bestimmung des Ausreissers, sondern um die Erzeugung der Diagramme. Ein Diagramm fuer jede Spalte. In meinem Beispiel also drei Diagramme fuer die drei Prozessparameter.
2. In jedem Diagramm moechte ich die zugehoerigen Prozessparameter einer ganz bestimmten Seriennummer farblich kennzeichnen. In meinem Beispiel war das SN20.
Anzeige
AW: so war das verstanden
03.04.2018 21:19:03
Fennek
Hallo Simon,
genau so habe ich das verstanden.
Nur das automatische Erzeugen der Charts (eher einfach) ist der zweite Schritt, der erste ist die Identifizierung der Ausreißer.
Bevor Du diesen Schritt nicht machst, schreibe ich dir keinen Code für den zweiten Schritt.
mfg
AW: so war das verstanden
03.04.2018 22:54:58
Simon
Die Seriennummer des Bauteils ist gegeben und muss nicht separate bestimmt werden. Es handelt sich dabei um ein Beanstandungsbauteil.
Das heisst wenn ich ein Bauteil mit einer bestimmten Seriennummer bekomme, moechte ich in mein Liste mit den Prozessparametern gehen und mir graphisch anzeigen lassen wo die Parameter dieser bestimmten Seriennummer im Vergleich zu allen anderen liegt. Und das muss nicht zwingend ein Ausreisser sein.
Danke fuer deine Hilfe.
Anzeige
AW: Datenaufbau
04.04.2018 08:15:12
Fennek
Hallo Simon,
ok, das kam in der Frage (für mich) nicht so deutlich rüber.
Frage: Gibt es viele Datei im gezeigten Format, oder die die Daten für weitere Versuche in der gezeigten Daten weiter unten? Also ist die Zeit durch die Liste bestimmt, oder muss aus einer langen Liste die Zeit, z.B. ein Tag, ausgewählt werden?
Ist es immer das selbe Bauteil?
mfg
(Wenn dir die Rückfragen zu viel werden, gehe auf Berverlies Webseite Excel-Inn.de und lade eine Musterlösung)
AW: Datenaufbau
04.04.2018 20:39:45
Simon
Hallo Fennek,
ich lade mir aus unserer Datenbank die Prozessdaten fuer einen bestimmten Zeitraum herunter. In dieser Liste finde ich dann die Seriennummer.
Nein, es nicht immer das selbe Bauteil. Es ist auch nicht immer der selbe Zeitraum.
Mir waere auch schon geholfen wenn ich wuesste wie man die Diagramme erzeugt.
Hast du dazu eine Idee? Du meintest das ist eine leichte Aufgabe. Fuer mich als VBA Neuling ist auch das nicht so einfach.
Gruss,
Simon
Anzeige
VBA-freie Lösung
04.04.2018 10:48:28
Beverly
Meine Frage war auch nicht nach der mathematisch Bestimmung sondern wie die Ausreißer im Tabellenblatt bestimmt/festgelegt werden - aber das hast du jetzt ja beschrieben.
Benutze eine Hilfstabelle, in der du per Formel die jeweiligen Werte für die Diagramme ermittelst

Sheet1
 HIJKL
1  Prozessparameter 1Prozessparameter 2Prozessparameter 3
211.26.17 7:42 AMSN2075,69838,722-1,205

verwendete Formeln
Zelle Formel Bereich N/A
H2=INDEX($A:$A;VERGLEICH($I$2;$B:$B;0);)  
J2:L2=INDEX($C:$E;VERGLEICH($I$2;$B:$B;0);SPALTE(A1))  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


Und füge die ermittelten Werte als 2. Datenreihe in jedes Diagramm ein - sie liegen dann genau auf dem jeweiligen Datenpunkt der 1. Datenreihe.


Anzeige
AW: VBA-freie Lösung
04.04.2018 20:43:43
Simon
Hallo Karin,
die Funktion finde ich sehr interessant. Die zeitliche Einsparung haelt sich jedoch in Grenzen. Die Prozessparameter stehen alle in der Zeile mit der Seriennummer Ich kann ganz einfach mit STRG + F die Seriennummer suchen und dann die Daten aus der entsprechenden Zeile kopieren.
Gruss,
Simon
Es spielt schon eine Rolle...
04.04.2018 23:44:49
Beverly
Hi Simon,
...ob du jedesmal erst die betreffende Zeile suchen musst oder ob du nur in Zelle I2 die Seriennummer ändern musst, die im Diagramm andersfarbig dargestellt werden soll.
Den Satz unterhalb des geposteten Tabellenausschnittes in meinem vorhergehenden Beitrag hattest du gelesen? Du brauchst also überhaupt kein VBA, um den Datenpunkt im Diagramm andersfarbig darzustellen, nur diese Hilfstabelle.


Anzeige
AW: VBA - Code
05.04.2018 09:30:57
Fennek
Hallo Simon,
versuche mal ob Du mit diesem Code klar-kommst.

Sub F_en()
'ein neues, leeres anlegen, mit alt-F11 den VBA-Editor öffnen,
'im Menü: Einfügen: Modul
'diesen Code in Fenster kopieren
'====> Trennung des Makros (speichern als Chart.xlsm) und Daten
'das Workbook mit dem Makro muss geöffnet sein
'einmalig in Menü: Ansicht: Makro: Makros anzeigen: [F_en] Optionen: ctrl-w
'damit kann der Makro auch aus anderen offenen Workbooks mit strg-w gestartet werden
'Annahmen: die Daten sind so wie in der gezeigten Tabelle
'alle Daten bis zur 1. Leerzeile kommen in die Charts
'falls in Spalte B eine oder mehrere Zellen gelb gefärbt ist, wird das in den Chart übernommen
'Plazierung: Linke obere Ecke
Dim WS As Worksheet: Set WS = ActiveSheet
Dim Pos
Pos = Array("G5", "G20", "G35")
'Datenbereich
lr = Cells(1, 1).End(xlDown).Row
'X_Achse = WS.Name & "!" & Range("A1", Cells(lr, 1)).Address
X_Achse = Range("A1", Cells(lr, 1)).Address
'3 Charts
For c = 0 To 2
Y_Achse = Range(Cells(1, c + 3), Cells(lr, c + 3)).Address
Set Rng = Union(Range(X_Achse), Range(Y_Achse))
Rng.Select
With Range(Pos(c))
WS.Shapes.AddChart2(240, xlXYScatter, .Left, .Top, 360, 216).Select
'Markierung
For i = 2 To lr
If Cells(i, 2).Interior.Color = vbYellow Then
ActiveChart.FullSeriesCollection(1).Points(i - 1).Format.Fill.ForeColor.RGB =  _
RGB(255, 255, 0)
End If
Next i
End With
Next c
End Sub
Das Forum verschiebt nach einer Woche alles ins Archiv, wenn nötig eröffnest Du das Thema neu.
mfg
Anzeige
AW: VBA - Code
05.04.2018 10:52:58
Beverly
Hi Simon,
hier mein Vorschlag (ohne Select) - die Abfrage der Seriennummer erfolgt per InputBox:
Sub DiasErstellen2()
Dim varNummer As Variant
Dim rngZelle As Range
Dim lngZeile As Long
Dim intSpalte As Integer
Dim lngLetzte As Long
Dim intLetzte As Integer
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects.Delete
lngLetzte = Cells(1, 1).End(xlDown).Row
intLetzte = Cells(1, 1).End(xlToRight).Column
lngZeile = 0
intSpalte = 3
varNummer = Application.InputBox("Seriennummer", "Auswahl Seriennummer")
If varNummer  "Falsch" Then
Set rngZelle = Columns(2).Find(varNummer, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
For intSpalte = 3 To intLetzte
With ActiveSheet.Shapes.AddChart2(240, xlXYScatter, _
Columns(intLetzte + 1).Left, lngZeile, 360, 220).Chart
.SetSourceData Source:=Range("A1"), PlotBy:=xlColumns
.SetSourceData Source:=Union(Range(Cells(2, 1), Cells(lngLetzte, 1)), _
Range(Cells(2, intSpalte), Cells(lngLetzte, intSpalte)))
.HasLegend = False
.SeriesCollection(1).Points(rngZelle.Row - 1).Format.Fill.ForeColor.RGB = _
RGB(255, 255, 0)
DoEvents
End With
lngZeile = lngZeile + 220
Next intSpalte
End If
End If
End Sub

Falls der Beitrag bereits in das Archiv gewandert ist, musst du keinen neuen Thread eröffnen: es reicht, wenn zu den Link, den du per Mail erhalten hast, ganz normal anklickst - dann gelangst du zum betreffenden Beitrag und solange du den Link aus der Mail nichts löschst, kannst du immer noch auf den betreffenden Beitrag aus dem Archiv antworten.


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige