Sortieren mit Vorgabe

  • #1
P

prak05

Mitglied
Themenersteller
Dabei seit
09.05.2005
Beiträge
19
Reaktionspunkte
0
Hallo Leute,
stehe wieder vor einem für Anfänger (wie mich  :-X) unlösbaren Problem.
Ich muss eine Exceltabelle mit 5 Spalten nach mehreren Kriterien sortieren.
Die 5 Spalten sind folgendermaßen formatiert:

D LC01 01.05.2005 34 2678
A RH07 02.05.2005 0 0
B RC02 02.05.2005 0 0

1. Spalte Schicht, 2.Spalte Werkzeug, 3.Spalte Datum, 4. Spalte Ausschuss, 5.Spalte Stückzahl

Jetzt müssen die Daten so ausgegeben werden:

Pro Tag und Pro Schicht Aufteilung in RC/LC und RH/LH Werkzeuge und dafür jeweils die Daten Ausschuss und Stückzahl in ein Feld Schreiben.

Wäre für Eure Hilfe wirklich dankbar. :)
Beste Grüße Prak
 
  • #2
Hallo prak05,

probier mal diesen Makro aus, ob da ungefähr das ist was du suchst.

Zur Ausführung muß deine Tabelle aktiv sein.

Der Makro legt dann eine Kopie dieses Blattes an und verdichtet die Daten.

Gruß Matjes :)
Code:
Option Explicit
  
  
Sub ZusammenfassungDerMessergebnisse()

 ->Quelldaten Beschreibung
 ->Spalten
  Const c_SP_Schicht = 1
  Const c_SP_Werkzeug = 2
  Const c_SP_Datum = 3
  Const c_SP_Ausschuss = 4
  Const c_SP_Stueckzahl = 5
 ->Zeilen
  Const c_Z_ersteWertZeile = 2
  
 ->Ersatzstrings LC/RC und LH/RH
  Const c_Sorte_LCRC = LC/RC
  Const c_Sorte_LHRH = LH/RH
  
  Dim ws As Worksheet, r As Range
  Dim l_rows As Long, x As Long
  Dim s_Werkzeugsorte As String
  
  Set ws = ActiveSheet
 ->Blatt kopieren
  ws.Copy After:=ws
  Set ws = ActiveSheet
 ->Zeilenanzahl feststellen
  l_rows = ws.Cells(ws.Rows.Count, c_SP_Schicht).End(xlUp).Row
  
 ->Werkzeug durch Werkzeug-Sorte ersetzen
  For x = c_Z_ersteWertZeile To l_rows
    s_Werkzeugsorte = UCase(Left(ws.Cells(x, c_SP_Werkzeug).Value, 2))
    If s_Werkzeugsorte = LC Or s_Werkzeugsorte = RC Then
      ws.Cells(x, c_SP_Werkzeug).Value = c_Sorte_LCRC
    ElseIf s_Werkzeugsorte = LH Or s_Werkzeugsorte = RH Then
      ws.Cells(x, c_SP_Werkzeug).Value = c_Sorte_LHRH
    Else
      MsgBox (Unbekanntes Werkzeug in Zeile  & x)
      ws.Cells(x, c_SP_Werkzeug).Select
      GoTo Aufraeumen
    End If
  Next
  
 ->Sortierbereich definieren
  Set r = ws.Range( _
            Cells(c_Z_ersteWertZeile, c_SP_Schicht), _
            Cells(l_rows, c_SP_Stueckzahl))
  
 ->Nach Tag und Schicht und Werkzeugkennung sortieren
  r.Sort _
    Key1:=ws.Cells(c_Z_ersteWertZeile, c_SP_Datum), _
    Order1:=xlAscending, _
    Key2:=ws.Cells(c_Z_ersteWertZeile, c_SP_Schicht), _
    Order2:=xlAscending, _
    Key3:=ws.Cells(c_Z_ersteWertZeile, c_SP_Werkzeug), _
    Order3:=xlAscending, _
    Header:=xlNo
  
 ->für gleiche TAG/SCHICHT/WERKZEUGKENNUNG zusammenfassen
  For x = l_rows To c_Z_ersteWertZeile + 1 Step -1
    If (ws.Cells(x, c_SP_Datum).Value = ws.Cells(x - 1, c_SP_Datum).Value) And _
      (ws.Cells(x, c_SP_Schicht).Value = ws.Cells(x - 1, c_SP_Schicht).Value) And _
      (ws.Cells(x, c_SP_Werkzeug).Value = ws.Cells(x - 1, c_SP_Werkzeug).Value) Then
      
     ->gleich -> Werte auf x-1 aufaddieren
      ws.Cells(x - 1, c_SP_Ausschuss).Value = _
      ws.Cells(x - 1, c_SP_Ausschuss).Value + ws.Cells(x, c_SP_Ausschuss).Value
      ws.Cells(x - 1, c_SP_Stueckzahl).Value = _
      ws.Cells(x - 1, c_SP_Stueckzahl).Value + ws.Cells(x, c_SP_Stueckzahl).Value
     ->Zeile x löschen
      ws.Rows(x).Delete
    End If
  Next
  
Aufraeumen:
  Set ws = Nothing: Set r = Nothing
End Sub
 
  • #3
Hallo Matjes,
erstmal danke für deine Hilfe.
Leider klappt das Auswerten noch nicht so ganz.  :-\
Es passiert zwar irgendetwas, aber es bleiben immer noch ein paar Zeilen stehen.
Das Blatt wird kopiert, aber keine Auswertung.
Habe hier noch ein ausführlicheres Beispiel angehängt.
Wäre dir sehr dankbar wenn du nochmal drüberschauen könntest.
Beste grüße Prak

P.S.: Schichten gibts es A,B,D aber mehrere Werkzeuge (mehrere LC,LH,RH,RC) Datum jeweils immer einen ganzen Monat.
Das hier nur Beispiel für einen Tag:

A LC01 01.04.2005 0 0
A LC02 01.04.2005 0 0
A LH05 01.04.2005 0 0
A LH08 01.04.2005 0 0
A RC01 01.04.2005 0 0
A RC02 01.04.2005 0 0
A RH08 01.04.2005 0 0
A RH10 01.04.2005 0 0
A RH11 01.04.2005 0 0
A RH12 01.04.2005 0 0
B LC01 01.04.2005 11 239
B LC02 01.04.2005 0 0
B LH05 01.04.2005 0 0
B LH08 01.04.2005 0 0
B RC01 01.04.2005 0 0
B RC02 01.04.2005 1 278
B RH08 01.04.2005 2 8
B RH11 01.04.2005 4 184
B RH12 01.04.2005 2 239
D LC01 01.04.2005 23 199
D LC02 01.04.2005 0 0
 
  • #4
Hi prak05,

welche Zusammenfassung soll denn da herauskommen?

Könntest Du das mal explicit aufschreiben.

Gruß Matjes :)
 
  • #5
Hallo Matjes hab dir eine Datei geschickt.
Grüße Prak
 
Thema:

Sortieren mit Vorgabe

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.849
Beiträge
708.001
Mitglieder
51.499
Neuestes Mitglied
sugarland
Oben