Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Bailando am April 19, 2015, 18:41:08 Nachmittag
-
Hallo zusammen,
mein Anliegen habe ich in dem angehängten Dokument näher erläutert. Ich möchte Daten aus einer Tabelle analysieren bzw. anders zusammenfassen. Ich denke, dass ich dafür eine Pivot-Tabelle benötige. Ich habe es bereits ausprobiert, jedoch komme ich nicht zu dem gewünschten Ergebnis. Da ich kein Excel-Profi bin, freue ich mich über jegliche Hilfe :)
Vielen Dank!
-
Moin,
lies dir mal das hier (http://www.excel-ist-sexy.de/forenhilfe/bilder-statt-datei/) durch …
-
Hallo Günther,
vielen Dank für die Info. Ich habe jetzt eine Mustermappe erstellt, in der meine Ausgangs- sowie Zieltabelle zu sehen sind.
Wenn ich in der Zieltabelle in der A-Spalte die Auftragsnummern eintrage, soll sich Excel automatisch aus dem 1. Tabellenblatt die Daten (zuzüglich der entsprechenden Mitarbeiter) ziehen, an denen an den jeweiligen Auftragsnummern gearbeitet worden wurde.
Ist es möglich solche Verknüpfungen bzw. eine Pivot Tabelle zu erstellen, sodass die Eintragung der Daten bei der Eingabe der Auftragsnummer nicht mehr manuell sondern automatisch funktioniert?
Ich freue mich über jegliche Hilfe :)
-
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 ...
-
Sorry,
aber das überlasse ich gerne anderen. Du hast zu Beginn offensichtlich entschieden, mir anders aufgebaute Daten zur Verfügung zu stellen. Dafür habe ich dir eine funktionierende Lösung erarbeitet. Dass die Realität eine andere ist: Schade, da habe ich dann ja wohl für den Papierkorb gearbeitet, mindestens teilweise. Aber das tue ich nicht gerne, was du vielleicht verstehst. Das ist übrigens auch der Grund, dass ich mir die revidierte Datei nicht angesehen habe.