Moin,
ich mag keine Formeln, die länger sind als 50 Zeichen. Darum die "saubere" Lösung über VBA. Füge diesen Code:
Option Explicit
Option Base 1
Sub Umsortieren() 'by GMG-CC.de, Günther Mumme
Dim rngData As Range, c As Range, rngANr2Del As Range
Dim aData()
Dim lRow As Integer, lCol As Integer
Dim Ze As Integer, Sp As Integer, z As Integer
lRow = Cells(Rows.Count, 2).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set rngData = Range(Cells(2, 2), Cells(lRow, lCol))
ReDim aData(rngData.Cells.Count, 3)
z = 1
For Each c In rngData
If LCase(c) <> "k" Then
Ze = c.Row
Sp = c.Column
aData(z, 1) = c
aData(z, 2) = Cells(1, Sp) 'Datum
aData(z, 3) = Cells(Ze, 1) 'MA
z = z + 1
End If
Next c
With Sheets("Zieltabelle")
.Cells.Clear
.Cells(1, 1).Resize(1, 3) = Array("AuftragsNr.", "Daten", "Mitarbeiter")
.Cells(2, 1).Resize(UBound(aData), 3) = aData
'###############################################
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A2:A" & lRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("B2:B" & lRow), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C2:C" & lRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:C" & lRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
For Ze = 3 To lRow + 1
If .Cells(Ze, 1) = .Cells(Ze - 1, 1) Then
If rngANr2Del Is Nothing Then
Set rngANr2Del = .Cells(Ze, 1)
Else
Set rngANr2Del = Union(rngANr2Del, .Cells(Ze, 1))
End If
Else
If Not rngANr2Del Is Nothing Then
rngANr2Del.ClearContents
Set rngANr2Del = Nothing
End If
End If
Next Ze
End With
End Sub
in das Modul des Tabellenblattes "Ausgangstabelle" ein und rufe dann das Makro per Alt+F8 auf. Im Arbeitsblatt "Zieltabelle" (erforderlichenfalls im Code ändern) werden ann die Daten geschrieben. Nach jedem Änderungs-Durchlauf erneut aufrufen ...