Moin zusammen,
ich möchte gerne Arbeitstage von einzelnen Mitarbeitern zählen.
Ich habe in Spalte A das Datum und in Spalte B die Namen. Das Datum kommt jeweils pro Mitarbeiter mehrfach vor und nicht jeder Mitarbeiter arbeitet jeden Tag.
Auf dem zweiten Tabellenletzte benötige ich die Auswertung wie viele Arbeitstage der jeweilige Mitarbeiter gearbeitet hat.
Beispiel habe ich angehängt.
Wer kann helfen?
Danke aber Pivot klappt leider nicht weil die Auswertung nur ein kleiner Teil einer großen Auswertung ist die ohne Pivot laufen soll.
Warum hast du das nicht erwähnt ?
Und warum kein Pivot ?
Sorry, wusste nicht, dass es so relevant ist das Pivot nicht in Frage kommt.
Wie gesagt, Die Auswertung der Arbeitstage ist nur ein ganz kleiner Teil einer großen Statistik die ohne Pivot auskommen muss da aus verschiedenen Dateien dort etwas zusammen getragen wird.
Und ich kann das nicht in verschiedenen Tabellen aufteilen in der eine Tabelle eine Pivot ist und der Rest mit Formeln hinterlegt.
Hallo,
wäre das eine Möglichkeit?
Arbeitsblatt mit dem Namen 'Tabelle1' |
| A | B | C | D | E | F | G | H |
1 | Datum | Name | | Datum | Müller | Meier | Schulze | Schmidt |
2 | 02.05.2020 | Müller | | 02.05.2020 | 1 | 1 | 1 | |
3 | 02.05.2020 | Meier | | 07.05.2020 | | 1 | | |
4 | 02.05.2020 | Schulze | | 08.05.2020 | 1 | | 1 | 1 |
5 | 02.05.2020 | Schulze | | 11.05.2020 | | 1 | | |
6 | 02.05.2020 | Schulze | | 12.05.2020 | | | 1 | |
7 | 07.05.2020 | Meier | | 13.05.2020 | 1 | 1 | | |
8 | 08.05.2020 | Schulze | | 16.05.2020 | 1 | | | |
9 | 08.05.2020 | Schmidt | | 17.05.2020 | | | 1 | |
10 | 08.05.2020 | Müller | | 18.05.2020 | | | | 1 |
11 | 11.05.2020 | Meier | | 19.05.2020 | 1 | 1 | | |
12 | 12.05.2020 | Schulze | | 23.05.2020 | | | | 1 |
13 | 13.05.2020 | Müller | | 24.05.2020 | | | 1 | |
14 | 13.05.2020 | Müller | | 25.05.2020 | | | | 1 |
15 | 13.05.2020 | Meier | | 26.05.2020 | 1 | | | |
16 | 16.05.2020 | Müller | | Ergebnis | 6 | 5 | 5 | 4 |
17 | 17.05.2020 | Schulze | | | | | | |
18 | 18.05.2020 | Schmidt | | | | | | |
19 | 19.05.2020 | Müller | | | | | | |
20 | 19.05.2020 | Müller | | | | | | |
21 | 19.05.2020 | Müller | | | | | | |
22 | 19.05.2020 | Meier | | | | | | |
23 | 23.05.2020 | Schmidt | | | | | | |
24 | 24.05.2020 | Schulze | | | | | | |
25 | 25.05.2020 | Schmidt | | | | | | |
26 | 26.05.2020 | Müller | | | | | | |
Zelle | Formel |
E16 | =TEILERGEBNIS(109;[Müller]) |
F16 | =TEILERGEBNIS(109;[Meier]) |
G16 | =TEILERGEBNIS(109;[Schulze]) |
H16 | =TEILERGEBNIS(109;[Schmidt]) |
E2 | =WENN(SUMMENPRODUKT(($A$2:$A$26=[@Datum])*($B$2:$B$26=Tabelle1[[#Kopfzeilen];[Müller]]))>0;1;"") |
F2 | =WENN(SUMMENPRODUKT(($A$2:$A$26=[@Datum])*($B$2:$B$26=Tabelle1[[#Kopfzeilen];[Meier]]))>0;1;"") |
G2 | =WENN(SUMMENPRODUKT(($A$2:$A$26=[@Datum])*($B$2:$B$26=Tabelle1[[#Kopfzeilen];[Schulze]]))>0;1;"") |
H2 | =WENN(SUMMENPRODUKT(($A$2:$A$26=[@Datum])*($B$2:$B$26=Tabelle1[[#Kopfzeilen];[Schmidt]]))>0;1;"") |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
hi
zum Tagezählen könnte man für jeden Namen die Anzahl unterschiedlicher Datumsangaben zählen oder man kann, wie es der Code unten macht, jede Zeile der Tabelle durchgehen ("
For i = 2 To UBound(a)") und in einer Liste für jeden Namen eine Liste mit allen unterschiedlicher Datumsangaben von diesem Namen eintragen, also Liste in Liste. Diese Listen nennt man Dictionary. Ihre Einträge sind mit einer eindeutigen Bezeichnung versehen, auch Key genannt. Die Einträge der Namensliste sind also Datumslisten und mit dem Namen gekennzeichnet (Key). Für die Auswertung werden alle Namen der Namensliste ("
For i = 0 To .Count - 1") und die Größe der Datumslisten (Anzahl der Einträge) tabellarisch dargestellt.
Code:
Sub Datensummen()
Dim a, b
Dim Ecke As Range
Dim i As Long
Dim Name As String
a = Worksheets("Tabelle1").Range("a1").CurrentRegion
Set Ecke = Worksheets("Tabelle2").Range("A2")
With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(a)
Name = a(i, 2)
If Not .Exists(Name) Then .Add Name, CreateObject("Scripting.Dictionary")
.Item(Name).Item(a(i, 1)) = 1
Next i
ReDim b(1 To .Count, 1 To 2)
For i = 0 To .Count - 1
b(i + 1, 1) = .keys()(i)
b(i + 1, 2) = .Items()(i).Count
Next i
End With
Ecke.Resize(UBound(b, 1), UBound(b, 2)) = b
End Sub
Damit wird auf Knopfdruck Deine Liste erzeugt, eine frühere Liste übeschrieben, der überstehende Bereich aber nicht gelöscht (vorsicht).
Gruss Raoul
Hallo
Du hast eingangs gefragt, "Wer kann helfen?" und hast drei qualitativ hochwertige Antworten bekommen. Bist Du noch am probieren oder gibt es andere Gründe, warum Du damit nicht klar kommst? Habe gesehen, dass auch bei einer früheren Deiner Anfragen die Antwort, möglicherweise die Lösung Deines Excel-Problems, von Dir noch nicht akzeptiert wurde. Die Antworten passieren nicht versehentlich, sondern bewusst absichtlich, mit dem Ziel, Deine Frage bestmöglich zu beantworten.
Gruss, Raoul