Ich habe eine Tabelle mit Mitarbeitern. Spalte A ist eine Liste der Abteilungsarten (Verkauf, Personalwesen, Lohnbuchhaltung usw.). Spalte B ist das Datum, an dem ihre Beurteilung abgeschlossen ist, oder leer, wenn sie unvollständig ist. Ich hätte gerne eine Funktion, die die Spalte „Abteilung“ für eine bestimmte Abteilungsart (z. B. „Verkauf“) prüft und, wenn sie „Verkauf“ ergibt, die entsprechenden Zeilen der Spalte „Beurteilung“ prüft und zählt, wie viele Daten vorhanden sind. Ich würde dies dann für alle anderen Abteilungsarten wiederholen. Wenn es also im Beispiel „Verkauf“ vier Mitarbeiter gibt und zwei ein Beurteilungsdatum haben, wäre das Ergebnis „2“. Dabei ist zu beachten, dass ich nicht möchte, dass die Daten in Spalte B gezählt werden, die sich auf die anderen Abteilungsarten beziehen.
Spalte A - Abteilung . . . . - Personalwesen – Vertrieb – Personalwesen – Lohn- und Gehaltsabrechnung – Vertrieb – Vertrieb – Vertrieb .
Spalte B - Bewertung- 1.7.2015 - 8.7.2015 - 6.7.2015 - "Leer" - "Leer" - 3.7.2015 - "Leer" -
Antwort1
Öffnen Sie den VBA-Editor und wählen Sie dann 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 auf die Schaltfläche Speichern in der Symbolleiste und schließen Sie dann den VBA-Editor, um zu Ihrer Tabelle zurückzukehren. Sie können die DEPTAPPCOUNT
Funktion jetzt wie die internen Excel-Funktionen verwenden. Wenn Ihre Abteilungsspalte von A2 bis A7 reicht (und die Beurteilungsdaten in B2 bis B7 liegen – die gezählte Spalte muss sich direkt 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 leeren Beurteilungsdaten zu erhalten. Passen Sie den ersten Parameter (den Sales
Text) nach Wunsch an, um andere Abteilungen mitzuzählen.
Wenn Sie Excel 2007 oder höher verwenden, müssen Sie das Arbeitsblatt im XLSM
(makrofähigen) Format speichern.
Für diejenigen, die sich fragen, warum CountRange
an die benutzerdefinierte Funktion übergeben werden muss, obwohl sie nicht verwendet wird: Sie ist erforderlich, damit Excel die Anzahl neu berechnet, wenn die Datumsspalte geändert wird. Mit anderen Worten: Durch die Übergabe des zusätzlichen Bereichs an die Funktion entsteht eine Abhängigkeit in den Berechnungen von Excel.