Anzahl zählen mit Abgleich von Kriterium und Duplikaten vermeiden
#1
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?


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 11,1 KB / Downloads: 5)
Top
#2
Pivottable verwenden:


Angehängte Dateien
.xlsx   __pivot_001.xlsx (Größe: 13,62 KB / Downloads: 2)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • betzie_hh
Top
#3
Danke aber Pivot klappt leider nicht weil die Auswertung nur ein kleiner Teil einer großen Auswertung ist die ohne Pivot laufen soll.
Top
#4
Warum hast du das nicht erwähnt ?
Und warum kein Pivot ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#5
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.
Top
#6
Hallo,

wäre das eine Möglichkeit?
Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGH
1DatumNameDatumMüllerMeierSchulzeSchmidt
202.05.2020Müller02.05.2020111
302.05.2020Meier07.05.20201
402.05.2020Schulze08.05.2020111
502.05.2020Schulze11.05.20201
602.05.2020Schulze12.05.20201
707.05.2020Meier13.05.202011
808.05.2020Schulze16.05.20201
908.05.2020Schmidt17.05.20201
1008.05.2020Müller18.05.20201
1111.05.2020Meier19.05.202011
1212.05.2020Schulze23.05.20201
1313.05.2020Müller24.05.20201
1413.05.2020Müller25.05.20201
1513.05.2020Meier26.05.20201
1616.05.2020MüllerErgebnis6554
1717.05.2020Schulze
1818.05.2020Schmidt
1919.05.2020Müller
2019.05.2020Müller
2119.05.2020Müller
2219.05.2020Meier
2323.05.2020Schmidt
2424.05.2020Schulze
2525.05.2020Schmidt
2626.05.2020Müller

ZelleFormel
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
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#7
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
Top
#8
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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste