Spalte auf Wert prüfen. Wenn true, überprüfen Sie dieselbe Zeile in einer anderen Spalte und zählen Sie, wenn sie nicht leer ist

863
Kevin

Ich habe eine Tabelle mit Mitarbeitern. Spalte A ist eine Liste von Abteilungsarten (Verkauf, Personalabteilung, Lohnabrechnung usw.). Spalte B ist das Datum, an dem die Prüfung abgeschlossen ist, oder leer, wenn sie unvollständig ist. Ich möchte eine Funktion, die die Dept-Spalte auf einen bestimmten Dept-Typ überprüft (z. B. "Sales"). Wenn "Sales" gleich ist, werden die entsprechenden Zeilen in der Spalte "Beurteilung" geprüft und die Anzahl der Termine gezählt. Ich würde dann für alle anderen Abteilungsarten replizieren. Für das Beispiel "Verkauf" würde das Ergebnis also "2" sein, wenn vier Angestellte vorhanden sind und zwei ein Bewertungsdatum haben. Beachten Sie, dass ich nicht möchte, dass die Daten in Spalte B für die anderen Abteilungsarten gezählt werden.

Spalte A - Abt . . . . - HR - Vertrieb - HR - Personalabrechnung - Verkauf - Verkauf - Verkauf.

Spalte B - Beurteilung - 1/07/2015 - 8/07/2015 - 6/07/2015 - "Blank" - "Blank" - 3/07/2015 - "Blank" -

1

1 Antwort auf die Frage

1
Ben N

Öffnen Sie den VBA-Editor und wählen Sie im Menü Einfügen die Option Modul. Fügen Sie Folgendes in das resultierende Textfeld ein:

Function DEPTAPPCOUNT(Dept As String, Range As Range, CountRange As Range) As Integer Dim count As Integer For Each rCell In Range If rCell.Text = Dept Then If rCell.Offset(0, 1).Text <> "" Then count = count + 1 End If Next DEPTAPPCOUNT = count End Function 

Klicken Sie in der Symbolleiste auf die Schaltfläche Speichern, und schließen Sie den VBA-Editor, um zur Tabelle zurückzukehren. Sie können die DEPTAPPCOUNTFunktion jetzt wie die intrinsischen Funktionen von Excel verwenden. Wenn Ihre Abteilungsspalte von A2 bis A7 reicht (und die Beurteilungsdaten in B2 bis B7 sind - die gezählte Spalte muss sich rechts neben der Abteilungsspalte befinden, damit diese Funktion funktioniert), geben Sie ein =DEPTAPPCOUNT("Sales", A2:A7, B2:B7), um die Anzahl der Verkaufseinträge mit nicht zu erhalten bloße Beurteilungsdaten. Passen Sie den ersten Parameter (den SalesText) wie gewünscht an, um in anderen Abteilungen zu zählen.

Wenn Sie Excel 2007 oder neuer verwenden, müssen Sie das Arbeitsblatt im XLSM(Makro-aktivierten) Format speichern.

Für diejenigen, die sich fragen, warum CountRangesie an die benutzerdefinierte Funktion übergeben werden müssen, obwohl sie nicht verwendet wird, muss Excel die Anzahl neu berechnen, wenn die Datumsspalte geändert wird. Wenn Sie also den zusätzlichen Bereich an die Funktion übergeben, entsteht eine Abhängigkeit in Excel-Berechnungen.

Danke, aber was ist, wenn es mehr Spalten gibt als nur die beiden? Wenn also Spalte A = Abteilung und Spalte F = Beurteilung. Mit Spalten BE voller Daten wie Namen, Supervisor usw. Kevin vor 9 Jahren 0
@Kevin Aktualisieren Sie die "1" im Offset-Aufruf, um die Anzahl der Spalten anzugeben, in denen sich die Spalte "Beurteilung" rechts neben der Spalte "Department" befindet. In Ihrer Situation sollten Sie "4" einstellen. Ben N vor 9 Jahren 0
Vielen Dank, Ben, es funktioniert jetzt für mich. Noch eine Sache, wenn Sie nichts dagegen haben. Ich habe die Formel so dupliziert, dass jetzt eine andere Zelle die nächste Spalte zählt (Spalte G). Also habe ich die ganze Zahl für die erste Formel auf 4 und dann für die zweite Formel auf 5 geändert. Die zweite Forula habe ich auch in DEPTAPPCOUNT2 umbenannt. Dies funktioniert, außer dass das erste forumla neu berechnet wird, wenn ich das Datumsfeld aktualisiere, die zweite Formel jedoch nicht. Weißt du warum das so ist und hast du ein Update? Danke noch einmal. Kevin vor 9 Jahren 0
Obwohl der Parameter CountRange nicht im Code verwendet wird, müssen Sie den Datumszellenbereich darin übergeben, damit Excel diese Zellen als Abhängigkeiten der Zelle behandelt, die den Aufruf DEPTAPPCOUNT2 enthält. Ben N vor 9 Jahren 0