2016-08-23 6 views
0

Ich habe eine Liste der geloggten Arbeitsstunden von Mitarbeitern des Unternehmens. Ich suche nach einer Funktion, die die Anzahl der einzelnen Daten zählen kann, die jeder Mitarbeiter protokolliert hat, wie im Bild unten gezeigt.Zählen Sie einzigartige Daten aus der Protokollliste, wenn die Zelle

Emplyee  Date   Employee Unique logged dates 
John  2016-08-20  John  3 
John  2016-08-21  Fredrik  5 
John  2016-08-22  Josefine 2 
Fredrik  2016-08-20   
Fredrik  2016-08-21   
Fredrik  2016-08-22   
Fredrik  2016-08-23   
Fredrik  2016-08-24   
Josefine 2016-08-20   
Josefine 2016-08-21  

Here's an example of the list

Mit dieser Funktion kann ich die Anzahl der eindeutigen Daten zählen, aber nicht in Bezug auf die Liste der Mitarbeiter. So eine Funktion mit der „Unique angemeldet Daten“ kommen

=SUMPRODUCT((B2:B11<>"")/COUNTIF(B2:B11,B2:B11)) 
+0

Können Sie diese Tabelle als Text schreiben eingeben ? (In Ihren ursprünglichen Beitrag, und verwenden Sie '{}' Formatierung) – BruceWayne

+1

Sind die Daten immer eindeutig (pro Namen Abschnitt), wie in Ihrem Beispiel? Wenn ja, könnten Sie einfach eine COUNTIF-Formel machen und die Namen in Spalte A anstelle der Daten weglassen. – tigeravatar

+0

@BruceWayne, jetzt haben Sie den Tisch. Ihre Funktion funktioniert fast, aber sie zeigt nicht die richtige Zahl, wenn ich sie skaliere. Verliert ein paar Daten. Würde einen anderen Versuch wirklich schätzen. Thx – hank035

Antwort

0

Sie sind nah, ich denke, das sollte für Sie arbeiten (ich nehme Ihre Spalte A die Namen hat, B das Datum hat und D2 ist ein Name):

=RoundUp(SumProduct((($A$2:$A$11=D2))/Countif($B$2:$B$11,$B$2:$B$11)),0)

und als ein Array eingeben (mit CTRL + SHIFT + ENTER)

+0

Wie ich schon früher geschrieben habe, sind deine Funktionen fast schon da, aber wenn es hochskaliert wird, ist das Ergebnis niedriger als der tatsächliche Wert. – hank035

0

Ihr bereitgestellt Beispiel für die Verwendung in Zelle E2 und kopiert nach unten ist dies Array Formel:

=SUM(IF(FREQUENCY(IF($A$2:$A$100=D2,IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0))),ROW($A$2:$A$100)-ROW($A$2)+1),1)) 

Beachten Sie, dass Matrixformeln mit Ctrl + Verschiebung bestätigt werden muss + eingeben und nicht nur zu

+0

Erstaunlich! Funktioniert perfekt. Danke vielmals. – hank035

Verwandte Themen