Zusammengefasste Werte in Excel einzeln auflisten

Hallo Zusammen

Ich suche dringend eine Lösung für das folgende Problem.

Ein Werkstück soll nach bestimmten Prüfmerkmalen untersucht und anschliessend bestimmte Werte in einer vorbereiteten Exceltabelle eingetragen und mit einem Boxplot statistik ausgewerdet werden. Das Erstellen eines Boxplotes ist kein Problem sondern die Basis dazu.

In der Tabelle wird es je Prüfmerkmal 4 Klassen geben. Zu jeder Klasse wird dann die Anzahl der Fehlstellen eingetragen.

Das heisst z.B.

Werkstück 1 Menge 3 in Klasse 0,1 mm
Menge 4 in Klasse 0,8 mm
Menge 2 in Klasse 1,5 mm
Menge 3 in Klasse 3,0 mm
Werkstück 2 Menge 2 in Klasse 0,1 mm
Menge 0 in Klasse 0,8 mm
Menge 1 in Klasse 1,5 mm
Menge 1 in Klasse 3,0 mm

Für den Boxplot brauche ich jedoch die Menge je Klasse vereinzelt untereinander aufgelistet.

Für Klasse 0,1 am Werkstück 1 habe ich Menge 3.
Also 0,1
0,1
0,1 (alle weitern Klassen sollen direkt folgen entsprechend der Menge)
0,8
0,8
0,8
0,8
1,5
1,5
3,0
3,0
3,0
Dann weiter mit Werkstück 2 bis Werkstück n

Es ist scheinbar einfach aber die Umsetzung recht kompliziert.

Gibt es in Excel die Möglichkeit eine zusammgefasste Menge von Klassen aus einer Tabelle z.b. auf ein anderes Tabellenblatt automatisch zu übertragen aber so wie oben dargestellt "einzeln "aufzulisten lassen (entsprechend der eingegebenen Menge)?

Insgesamt gibt es 36 Prüfbereiche mit je 2 Prüfmerkmalen und 20 Veruchsteile. Es wäre ein Unding alles einzeln per Hand aufzulisten. Daher ist es mir wichtig eine vereinfachte Lösung zu finden.

Vielleicht auch ein Makro oder eine Schleife mit VBA. Leider kenn ich mit dem erstellen solcher Algorithem nicht aus.

Vielen Dank schonmal für Eure Hilfe.

Danke und Gruss

Commander001

Menge 4 in Klasse 0,8 mm

Hallo
steht das in einer einzigen Zelle oder wie ist die Aufteilung?

Gruß Holger

Hallo Holger

Erstmal Danke für die schnelle Antwort.

Nein es sind 2 Zellen

zb.
A1 B1
4 0,8
3 1,5

und ich möchte(z.b. übertragen auf ein anderes Tabellenblatt) stehen haben

0,8
0,8
0,8
0,8
1,5
1,5
1,5

Danke für weitere Tipps

Gruss
Comander001

Hallo Zusammen

Hallo Comander001,

Ein Werkstück soll nach bestimmten Prüfmerkmalen untersucht
und anschliessend bestimmte Werte in einer vorbereiteten
Exceltabelle eingetragen und mit einem Boxplot statistik
ausgewerdet werden. Das Erstellen eines Boxplotes ist kein
Problem sondern die Basis dazu.
In der Tabelle wird es je Prüfmerkmal 4 Klassen geben. Zu
jeder Klasse wird dann die Anzahl der Fehlstellen eingetragen.

Also sind (oder heissen) Deine Klassen: 0,1 / 0,8 / 1,5 /3,0?

Das heisst z.B.
Werkstück 1 Menge 3 in Klasse 0,1 mm
Menge 4 in Klasse 0,8 mm
Menge 2 in Klasse 1,5 mm
Menge 3 in Klasse 3,0 mm
Werkstück 2 Menge 2 in Klasse 0,1 mm
Menge 0 in Klasse 0,8 mm
Menge 1 in Klasse 1,5 mm
Menge 1 in Klasse 3,0 mm

Habe ich recht verstanden, dass jedes Werkstück sein eigenes Tabellenblatt bekommt?

Für den Boxplot brauche ich jedoch die Menge je Klasse
vereinzelt untereinander aufgelistet.

Wie wäre es, wenn Du eine Schleife verwendest. Spalte A liefert die Anzahl des Auftretens, Spalte B den Wert (bzw. die Klasse).

Für Klasse 0,1 am Werkstück 1 habe ich Menge 3.
Also
0,1
0,1
0,1 (alle weitern Klassen sollen direkt folgen entsprechend
der Menge)
0,8
0,8
0,8
0,8
1,5
1,5
3,0
3,0
3,0
Dann weiter mit Werkstück 2 bis Werkstück n

Also kommen die Werkstücke doch nicht in unterschiedlichen Tabellen? Wenn die Anzahl in A steht, und die Klasse in B, wie erkennst Du dann das neue Werkstück, oder kommen die alle untereinander in einem Blatt, ohne Lücke?
Und sollen dann die 4 Klassen gebündelt erscheinen oder die Werkstücke?

Es ist scheinbar einfach aber die Umsetzung recht kompliziert.
Gibt es in Excel die Möglichkeit eine zusammgefasste Menge von
Klassen aus einer Tabelle z.b. auf ein anderes Tabellenblatt
automatisch zu übertragen aber so wie oben dargestellt
"einzeln "aufzulisten lassen (entsprechend der eingegebenen
Menge)?

Mir persönlich viele da eben die Schleife ein For… Next.

Insgesamt gibt es 36 Prüfbereiche mit je 2 Prüfmerkmalen und
20 Veruchsteile. Es wäre ein Unding alles einzeln per Hand
aufzulisten. Daher ist es mir wichtig eine vereinfachte Lösung
zu finden.

20 Teile habe ich verstanden. Bei Prüfbereich und Prüfmerkmal schleudere ich. Kannst Du mir kurz erläutern was Bereich, und was Merkmal ist?

Vielleicht auch ein Makro oder eine Schleife mit VBA. Leider
kenn ich mit dem erstellen solcher Algorithem nicht aus.

Das ist eigentlich simpel. Wer Statistik macht, sollte die besten Voraussetzungen mit bringen. Das was Du händisch machen müsstest bringst Du in ein Makro. Bei der Syntax solltest Du hier mehr als ausreichend Unterstützung finden.

Vielen Dank schonmal für Eure Hilfe.

Würde Dir gern helfen. Bitte nochmal erläutern wo die Daten zu finden sind(ein Blatt, oder mehrere)? ggf. ist Mermal und Bereich gar nicht relevant? und folgen alle erfassten Daten untereinander (A: Anzahl, B: Klasse)?
Ich würde die Erstellung eines neuen Blattes in der gleichen Datei vorschlagen, mit einer geschachtelten Schleife. Äußere für Zeile (oder Klasse) und innere für Anzahl).

Danke und Gruss

Kannst Du ggf. so eine Datei hochladen (zum Mustererkennen und Testen)?

Commander001

MfG MwieMichel

Hallo MwieMichel

Danke für deine ersten Tipps.

Ich habe ein Beispiel hier hochgeladen http://www.workupload.com/file/x9l2wgb

In der Tabelle soll nur die Menge je Klasse und Prüfmerkmal eingetragen werden . Anschliessend alles einzeln Aufgelistet, wie darunter dargestellt.

Eine Schleife ist sicher eine gute Lösung. Leider habe ich da keine Erfahrung (Makro, VBA, Funtkionen Excel) für eine Umsetzung.

Vielen Dank schonmal für weitere Tipps

Gruss,
Comander001

Hallo MwieMichel

Hallo Comander001!

Danke für deine ersten Tipps.

Gern.

Ich habe ein Beispiel hier hochgeladen
http://www.workupload.com/file/x9l2wgb

Vielen Dank. Erklärt einiges, wirft aber auch neue Fragen auf. Ich sehe eine Matrix. Von außen nach innen zählt sie Bereiche 1 bis n1 und Werkstücke 1 bis n2 auf (wobei n1 ungleich n2 sein kann). Nach innen wird beim Bereich noch einmal nach Aussprung und Riss unterschieden. Im innern wird dann für jedes Werkstück noch einmal nach Auftreten in einer Klasse unterschieden.

In der Tabelle soll nur die Menge je Klasse und Prüfmerkmal
eingetragen werden . Anschliessend alles einzeln Aufgelistet,
wie darunter dargestellt.

Mit den ersten Schleifen war ich eben fertig. Die Matrix schreit nach einer dritten.
Wenn ich richtig verstehe, möchtest Du am Ende zwei Spalten (Aussprung und Riss) in denen jedes Auftreten mit einer Klasse aufgeführt wird. Richtig?

Eine Schleife ist sicher eine gute Lösung. Leider habe ich da
keine Erfahrung (Makro, VBA, Funtkionen Excel) für eine
Umsetzung.

Wenn Du Lust hast, kannst Du Dich mit ein paar Beispielen und etwas Unterstützung bestimmt schnell einarbeiten.

Vielen Dank schonmal für weitere Tipps
Gruss,
Comander001

Gib mir Bescheid, ob ich richtig verstanden habe. Werd mal schauen, was ich hinbekomme.
MfG MwieMichel

Hallo MwieMichel

Wenn ich richtig verstehe, möchtest Du am Ende zwei Spalten
(Aussprung und Riss) in denen jedes Auftreten mit einer Klasse
aufgeführt wird. Richtig?

Korrekt. Eine Spalte Aussprung und eine Spalte Riss.

Wie flexibel ist diese Auswertung am Ende? Insgesamt werden es ca. 36 Prüfbereiche (36 * (Aussprung + Riss) und 20 Werkstücke ( 20 * n Klassen) sein. Kann ich die Schleifen dann beliegbig anpassen?

Danke und einen schönen Montag

Gruss,

Comander001

Hallo MwieMichel

Hallo Comander001

Wenn ich richtig verstehe, möchtest Du am Ende zwei Spalten
(Aussprung und Riss) in denen jedes Auftreten mit einer Klasse
aufgeführt wird. Richtig?

Korrekt. Eine Spalte Aussprung und eine Spalte Riss.

Wie flexibel ist diese Auswertung am Ende? Insgesamt werden es
ca. 36 Prüfbereiche (36 * (Aussprung + Riss) und 20 Werkstücke
( 20 * n Klassen) sein. Kann ich die Schleifen dann beliegbig
anpassen?

Das schöne an der Schleife ist, dass Du sie beliebig oft in (am besten automatisch) bestimmten Grenzen durchlaufen kannst. Anders gesagt: egal wie viele Bereiche, egal wie viele Werkstücke.

Danke und einen schönen Montag

Danke. Hatte heute einen kleinen Ausetzer und geh früh schlafen. Werd mir das Problem aber morgen wieder zu Gemüte führen.

Gruss,

Comander001

MfG MwieMichel

Hallo Mwie Michel

Kein Problem. Das passt schon.

Das schöne an der Schleife ist, dass Du sie beliebig oft in
(am besten automatisch) bestimmten Grenzen durchlaufen kannst.
Anders gesagt: egal wie viele Bereiche, egal wie viele
Werkstücke.

Das klingt schon mal gut. Sowas suche ich.

Gruss, Comander001

Hallo MwieMichel

Hallo Comander001,

Ich habe ein Beispiel hier hochgeladen
http://www.workupload.com/file/x9l2wgb

Ich habe das Makro an Deinem Beispiel getestet. Schien zu funktionieren. Zum Ausprobieren bitte eine Kopie anlegen. Ich gehe davon aus, dass auf dem sonst keine weiteren Daten stehen. Weder darunter, noch rechts davon.

Eine Schleife ist sicher eine gute Lösung. Leider habe ich da
keine Erfahrung (Makro, VBA, Funtkionen Excel) für eine
Umsetzung.

Auf Deiner Kopie wechselst Du mit Alt + F11 auf die VBA Umgebung (und später auch wieder zurück). Oben findest Du Menü und Ribbon. Links darunter den Projekt-Explorer. Hier markierst Du Deine Kopie. Mit dem Menü Einfügen // Modul fügst Du ein solches zu Deiner Kopie hinzu. Nun kannst Du den folgenden Text (alles zwischen „Option Explicit“ und „End Sub“) in das Codefenster (rechts) reinkopieren.

Option Explicit

Sub MengeTeilen()

'Variablen deklarieren
Dim BNameA As String 'Quellblatt Name
Dim ZMax As Long, ZMin As Long, ZeileA As Long 'Zeilen
Dim SMax As Integer, SMenge As Integer, SKlasse As Integer 'Spalten
Dim Menge As Integer, Klasse As Double, Merkmal As String 'Zellinhalte

Dim BNameB As String 'Zielblatt Name
Dim ZAus As Long, ZRiss As Long 'Zeilen
Dim SAus As Integer, SRiss As Integer 'Spalten
Dim I As Integer 'Zähler

'Variablen initialisieren
BNameA = ActiveWorkbook.ActiveSheet.Name 'Blattname Quelldatensatz
SMenge = 2 'Spalte B
ZMin = 6 'Zeile ersten Datensatzes
'Zellbereich für Werte ermitteln
With ActiveWorkbook.ActiveSheet
ZMax = Cells(1048576, SMenge).End(xlUp).Row 'Letze Zeile
SMax = ActiveWorkbook.ActiveSheet.UsedRange.Columns.Count 'Letzte Spalte
End With

BNameB = „Auswertung“ 'Blattname Zieldatensatz
ZAus = 2
ZRiss = 2 'erste Zeile für Überschrift frei lassen
SAus = 2
SRiss = 4 'Spalte 2 und 4 verwenden

Application.ScreenUpdating = False 'Hinundherspringen unterdrücken

Sheets.Add 'Neues Blatt einfügen
With ActiveWorkbook.ActiveSheet
.Cells(1, SAus).Value = „Aussprung“ 'Überschriften einfügen
.Cells(1, SRiss).Value = „Riss“
.Name = BNameB 'umbenennen
.Move after:=Sheets(Sheets.Count) 'verschieben
End With

Sheets(BNameA).Activate 'zurück zur Quelldatenblatt
With ActiveWorkbook.ActiveSheet
For SMenge = SMenge To SMax Step 2 'erste Schleife (Spalten)
SKlasse = SMenge + 1 'Spalte Klasse immer rechts neben Menge
Merkmal = Cells(4, SMenge).Value 'lesen ob "Aussprung oder Riss
For ZeileA = ZMin To ZMax 'zweite Schleife (Zeilen)
Menge = Cells(ZeileA, SMenge).Value 'Werte lesen für Menge
Klasse = Cells(ZeileA, SKlasse).Value 'und Klasse
If Menge > 0 Then 'bei Menge Null keine Aktion
Sheets(BNameB).Activate 'sonst zum Zielblatt
With ActiveWorkbook.ActiveSheet
If Merkmal = „Aussprung“ Then 'Verzweigen
For I = 1 To Menge 'Eintrag wiederholen
Cells(ZAus, SAus).Value = Klasse
ZAus = ZAus + 1
Next
ElseIf Merkmal = „Riss“ Then
For I = 1 To Menge
Cells(ZRiss, SRiss).Value = Klasse
ZRiss = ZRiss + 1
Next
End If
End With
Sheets(BNameA).Activate 'zurück zum Quelldatenblatt
End If
Next 'nächste Zeile lesen
Next 'zur nächsten Spalte (Abstand 2: Menge und Klasse!)
End With
Application.ScreenUpdating = True
End Sub
Mit Alt + F11 zurück zu Excel. Aufrufen kannst Du das Makro „MengeTeilen“ dann mit Alt + F8. Solltest Du die Aktion wiederholen, musst Du das Blatt „Auswertung“ ggf. vorher löschen.

Alles was nach einem Hochkomma (’) steht sind Kommentare.
Bitte ausprobieren. Wenn es Probleme gibt, meld Dich noch mal. Und wenn es keine gibt, würd’ ich mich auch über eine Rückmeldung freuen.

Vielen Dank schonmal für weitere Tipps

Gruss,
Comander001

MfG MwieMichel

Hallo Mwie Michie

**Ich danke dir für den VBA Code. Hat wunderbar funktioniert. Anwenden kann ich es so aber noch nicht richtig.

Kommentare sind im Code. Ich hoffe ich habe an den richtigen Stellen kommentiert,soweit ich es eben verstanden habe. (Kommentare gelten immer den darüberstehenden Zeilen)**

Sub MengeTeilen()

'Variablen deklarieren
Dim BNameA As String 'Quellblatt Name
Dim ZMax As Long, ZMin As Long, ZeileA As Long 'Zeilen
Dim SMax As Integer, SMenge As Integer, SKlasse As Integer
'Spalten
Dim Menge As Integer, Klasse As Double, Merkmal As String
'Zellinhalte

Dim BNameB As String 'Zielblatt Name

Wie kann ich die Auswertung auf einem bestehenden (definierten)oder dem selben Arbeitsblatt ausführen? Die anschliessende statistische Auswertung soll auf dem Zielblatt schon vorbereitet sein und einfach die Daten abfragen die über das Makro eingetragen werden. Geht das? Man könnte die Gesamtmenge begrenzen und ich könnte ab einer bestimmten Zeile (z.B ab Zeile 800 die statistische Auswertung vorbereiten, also Min, Max, Median, Quartil1, Quartil3 + Diagramme usw.)

Dim ZAus As Long, ZRiss As Long 'Zeilen
Dim SAus As Integer, SRiss As Integer 'Spalten
Dim I As Integer 'Zähler

'Variablen initialisieren
BNameA = ActiveWorkbook.ActiveSheet.Name 'Blattname
Quelldatensatz
SMenge = 2 'Spalte B
ZMin = 6 'Zeile ersten Datensatzes

Hier definiere ich die erste Zelle die abgefragt wird und dann werden alle nach rechts und unten folgenden Zellen abgefragt?

'Zellbereich für Werte ermitteln
With ActiveWorkbook.ActiveSheet
ZMax = Cells(1048576, SMenge).End(xlUp).Row 'Letze Zeile
SMax = ActiveWorkbook.ActiveSheet.UsedRange.Columns.Count
'Letzte Spalte
End With

BNameB = „Auswertung“ 'Blattname Zieldatensatz

wie oben schon erwähnt benötige ich ein bestehendes Arbeitsblatt

ZAus = 2
ZRiss = 2 'erste Zeile für Überschrift frei lassen
SAus = 2
SRiss = 4 'Spalte 2 und 4 verwenden

Es wird jetzt nur Prüfbereich 1 abgefragt und Aussprung und Riss über das Makro ausgelesen. Was muss hier stehen damit alle Prüfbereiche abgefragt werden? Es sind 36. In manchen Prüfbereichen kommt zu „Aussprung“ und „Riss“ noch „Oberfläche“ hinzu. (Das hangt davon ab ob der Prüfbereich eine Kante oder eine Fläche ist. Bei Fläche kommt Prüfmerkmal „Oberfläche“ hinzu) Ich hoffe das ist nicht zu kompliziert erklärt. Es ist wohl doch etwas aufwändiger.


Application.ScreenUpdating = False 'Hinundherspringen
unterdrücken

Sheets.Add 'Neues Blatt einfügen
With ActiveWorkbook.ActiveSheet
.Cells(1, SAus).Value = „Aussprung“ 'Überschriften einfügen
.Cells(1, SRiss).Value = „Riss“

Überschriften sollen nicht eingefügt werden sondern die Daten unter bestehende eingetragen werden

.Name = BNameB 'umbenennen
.Move after:=Sheets(Sheets.Count) 'verschieben
End With


Sheets(BNameA).Activate 'zurück zur Quelldatenblatt
With ActiveWorkbook.ActiveSheet
For SMenge = SMenge To SMax Step 2 'erste Schleife (Spalten)
SKlasse = SMenge + 1 'Spalte Klasse immer rechts neben Menge
Merkmal = Cells(4, SMenge).Value 'lesen ob "Aussprung oder
Riss
For ZeileA = ZMin To ZMax 'zweite Schleife (Zeilen)
Menge = Cells(ZeileA, SMenge).Value 'Werte lesen für Menge
Klasse = Cells(ZeileA, SKlasse).Value 'und Klasse
If Menge > 0 Then 'bei Menge Null keine Aktion
Sheets(BNameB).Activate 'sonst zum Zielblatt
With ActiveWorkbook.ActiveSheet
If Merkmal = „Aussprung“ Then 'Verzweigen
For I = 1 To Menge 'Eintrag wiederholen
Cells(ZAus, SAus).Value = Klasse
ZAus = ZAus + 1
Next
ElseIf Merkmal = „Riss“ Then
For I = 1 To Menge
Cells(ZRiss, SRiss).Value = Klasse
ZRiss = ZRiss + 1
Next
End If
End With

Wie wird Ausprung und Riss vom Prüfbereich n abgefragt? (z.B. Prüfbereich 12 oder Prüfbereich 23)

Sheets(BNameA).Activate 'zurück zum Quelldatenblatt
End If
Next 'nächste Zeile lesen
Next 'zur nächsten Spalte (Abstand 2: Menge und Klasse!)
End With
Application.ScreenUpdating = True
End Sub

Bitte ausprobieren. Wenn es Probleme gibt, meld Dich noch mal.

Das Makro funktioniert sehr gut. Sehr gute Beschreibung.

Und wenn es keine gibt, würd’ ich mich auch über eine
Rückmeldung freuen.

kannst du mir bei den bestehenden Problemem bitte noch helfen? Ich glaube alleine bekomme ich den Code nicht angepasst.

Grusse aus der Schweiz,

Comander001

Hallo Mwie Michie
**Ich danke dir für den VBA Code. Hat wunderbar funktioniert.
Anwenden kann ich es so aber noch nicht richtig.

Kommentare sind im Code. Ich hoffe ich habe an den richtigen
Stellen kommentiert,soweit ich es eben verstanden habe.
(Kommentare gelten immer den darüberstehenden Zeilen)**

Sub MengeTeilen()

'Variablen deklarieren
Dim BNameA As String 'Quellblatt Name
Dim ZMax As Long, ZMin As Long, ZeileA As Long 'Zeilen
Dim SMax As Integer, SMenge As Integer, SKlasse As Integer
'Spalten
Dim Menge As Integer, Klasse As Double, Merkmal As String
'Zellinhalte

Dim BNameB As String 'Zielblatt Name

Wie kann ich die Auswertung auf einem bestehenden
(definierten)oder dem selben Arbeitsblatt ausführen? Die
anschliessende statistische Auswertung soll auf dem Zielblatt
schon vorbereitet sein und einfach die Daten abfragen die über
das Makro eingetragen werden. Geht das? Man könnte die
Gesamtmenge begrenzen und ich könnte ab einer bestimmten Zeile
(z.B ab Zeile 800 die statistische Auswertung vorbereiten,
also Min, Max, Median, Quartil1, Quartil3 + Diagramme usw.)

Wenn Du darunter arbeitest, müsstest Du Dir sicher sein, dass die 800 Zeilen darüber ausreichen. Evtl. würde ich auf leere Spalten ausweichen.
Hier definiere ich nur den Namen des Containers der weiter unten dann mit dem Inhalt „Auswertung“ gefüllt wird. Wenn Du auf ein bestehendes Blatt zugreifen willst, entfiele der Block Sheets.Add, dazu weiter unten. Bei bestehenden Blättern muss die Zieladresse Cells(Zeile, Spalte) angepasst werden damit Du nicht bestehende Daten überschreibst. Oder anders. Wenn wir uns auf Dein Beispiel beziehen: hier stehen die Rohdaten auf Tabelle1. Wo genau sollen die Zieldaten hin?

Dim ZAus As Long, ZRiss As Long 'Zeilen
Dim SAus As Integer, SRiss As Integer 'Spalten
Dim I As Integer 'Zähler

'Variablen initialisieren
BNameA = ActiveWorkbook.ActiveSheet.Name 'Blattname
Quelldatensatz
SMenge = 2 'Spalte B
ZMin = 6 'Zeile ersten Datensatzes

Hier definiere ich die erste Zelle die abgefragt wird und dann
werden alle nach rechts und unten folgenden Zellen abgefragt?

Korrekt! Oben sehen wir die erste Spalte (SMenge) und erste Zeile (ZMin) des Datenbereiches.
Unten ermitteln wir per chicker Funktion die lezte Zeile des Datenbereiches (ZMax) sowie die letzte Spalte (SMax).

'Zellbereich für Werte ermitteln
With ActiveWorkbook.ActiveSheet
ZMax = Cells(1048576, SMenge).End(xlUp).Row 'Letze Zeile
SMax = ActiveWorkbook.ActiveSheet.UsedRange.Columns.Count
'Letzte Spalte
End With

BNameB = „Auswertung“ 'Blattname Zieldatensatz

wie oben schon erwähnt benötige ich ein bestehendes
Arbeitsblatt

Du könntest also einfach Auswertung in Anführungszeichen durch Deinen Zielblattnamen in Anführungszeichen ersetzen. Wenn dieses Blatt nicht leer ist, müssen wahrscheinlich die Zieladressen angepasst werden, siehe unten…

ZAus = 2
ZRiss = 2 'erste Zeile für Überschrift frei lassen
SAus = 2
SRiss = 4 'Spalte 2 und 4 verwenden

Es wird jetzt nur Prüfbereich 1 abgefragt und Aussprung und
Riss über das Makro ausgelesen. Was muss hier stehen damit
alle Prüfbereiche abgefragt werden? Es sind 36. In manchen
Prüfbereichen kommt zu „Aussprung“ und „Riss“ noch
„Oberfläche“ hinzu. (Das hangt davon ab ob der Prüfbereich
eine Kante oder eine Fläche ist. Bei Fläche kommt Prüfmerkmal
„Oberfläche“ hinzu) Ich hoffe das ist nicht zu kompliziert
erklärt. Es ist wohl doch etwas aufwändiger.

Bei einem weiteren Merkmal würden wir einfach eine Erweiterung der If Abfrage vornehmen, also nach
If Merkmal = „Ausssprung“ und
ElseIf Merkmal = „Riss“ zusätzlich
ElseIf Merkmal = „Oberfläche“ danach das obligatorische
End If


Application.ScreenUpdating = False 'Hinundherspringen
unterdrücken

Sheets.Add 'Neues Blatt einfügen
With ActiveWorkbook.ActiveSheet
.Cells(1, SAus).Value = „Aussprung“ 'Überschriften einfügen
.Cells(1, SRiss).Value = „Riss“

Überschriften sollen nicht eingefügt werden sondern die Daten
unter bestehende eingetragen werden

Wie oben bereits erwähnt würden hier diese vier Zeilen entfallen (oder einfach per ’ auskommentieren).
Das die Zieldaten unter bereits bestehende zu kopieren sind ist eine neue Option. Also, wie heisst das Zielblatt, und in welche Spalten sollen die Quelldaten kopiert werden?
Wer werden zwei weitere Parameter für Zeile und Spalte des Merkmals „Oberfläche“ benötigen. Wie oben werden wir dann für alle drei Spalten („Aussrpung“, „Riss“, „Oberfläche“) die letzte belegte Zeile ermitteln, um die neuen Daten darunter einzufügen.

.Name = BNameB 'umbenennen
.Move after:=Sheets(Sheets.Count) 'verschieben
End With

Sorry, auch diese drei Zeilen können wir entfernen, da wir bereits ein Zieldatenblatt haben.


Sheets(BNameA).Activate 'zurück zur Quelldatenblatt
With ActiveWorkbook.ActiveSheet
For SMenge = SMenge To SMax Step 2 'erste Schleife (Spalten)
SKlasse = SMenge + 1 'Spalte Klasse immer rechts neben Menge
Merkmal = Cells(4, SMenge).Value 'lesen ob "Aussprung oder
Riss
For ZeileA = ZMin To ZMax 'zweite Schleife (Zeilen)
Menge = Cells(ZeileA, SMenge).Value 'Werte lesen für Menge
Klasse = Cells(ZeileA, SKlasse).Value 'und Klasse
If Menge > 0 Then 'bei Menge Null keine Aktion
Sheets(BNameB).Activate 'sonst zum Zielblatt

Anstatt das BNameB zu erstellen und zu benennen werden wir oben per BNameB = „Blattname“ im Block Initialisierung einen festen Blattnamen vergeben.

With ActiveWorkbook.ActiveSheet
If Merkmal = „Aussprung“ Then 'Verzweigen
For I = 1 To Menge 'Eintrag wiederholen
Cells(ZAus, SAus).Value = Klasse
ZAus = ZAus + 1
Next

ZAus, ZRiss und ZOber müssen wir weiter oben erst einmal ermitteln.

ElseIf Merkmal = „Riss“ Then
For I = 1 To Menge
Cells(ZRiss, SRiss).Value = Klasse
ZRiss = ZRiss + 1
Next

Hier kommt die Abfrage für Oberfläche mit ElseIf… mit einem For To Next nach gleichem Muster.

End If
End With

Wie wird Ausprung und Riss vom Prüfbereich n abgefragt? (z.B.
Prüfbereich 12 oder Prüfbereich 23)

Das ist die zweite Schleife:
For SMenge = SMenge To SMax Step 2 'erste Schleife (Spalten)
SMenge ist die Spalte für die Menge, die bei 2 beginnt (Initialisierung) und bei SMax (letzte Spalte in Deiner Matrix endet. Der Step 2 bewirkt, dass wir nur jede zweite Spalte verwenden, da ja direkt neben der Menge die Klasse steht.
Oder wolltest Du einzelne Spalten direkt ansteuern? Dann wären wir mit der Schleife (zumindest mit dieser) auf dem falschen Pfad.

Sheets(BNameA).Activate 'zurück zum Quelldatenblatt
End If
Next 'nächste Zeile lesen
Next 'zur nächsten Spalte (Abstand 2: Menge und Klasse!)
End With
Application.ScreenUpdating = True
End Sub

Bitte ausprobieren. Wenn es Probleme gibt, meld Dich noch mal.

Das Makro funktioniert sehr gut. Sehr gute Beschreibung.

Und wenn es keine gibt, würd’ ich mich auch über eine
Rückmeldung freuen.

kannst du mir bei den bestehenden Problemem bitte noch helfen?
Ich glaube alleine bekomme ich den Code nicht angepasst.

Gib mir einfach Bescheid wie das Zieldatenblatt benannt ist, und in welcher Spalte die Einträge für „Aussprung“, „Riss“ und „Oberfläche“ unterzubringen sind. Ich kann Dir das Makro dann anpassen.
Wenn Du einzelne Spalten ansteuern möchtest, müsst ich mir ggf. noch mal Gedanken machen. Aber auch das sollte lösbar sein.

Grusse aus der Schweiz,

Comander001

MfG MwieMichel