Ich habe eine große Tabelle mit Personaldaten und möchte Tabellen auf anderen Arbeitsblättern mit gefilterten Datensätzen aus dem Hauptdatensatz erstellen. Ich habe Erfahrung im Schreiben umfangreicher VBA-Makros und könnte mit einer Datenbank und SQL in wenigen Minuten erreichen, was ich will, aber ich habe das Gefühl, als würde ich mit einem Stiefel einen Ameisenhaufen angreifen.
Ich habe versucht, es mit einer Pivot-Tabelle zu machen, habe jedoch keine Erfahrung mit Pivot-Tabellen und konnte keine Ergebnisse erzielen, mit denen ich zufrieden war.
Der große Personaldatensatz enthält Angaben wie beispielsweise das Startdatum, die aktuelle Abteilung, Fachkenntnisse usw. (Die üblichen Dinge, die Sie erwarten würden).
Ich möchte dynamische Tabellen auf anderen Arbeitsblättern erstellen, die beispielsweise alle Mitarbeiter anzeigen, die in der Abteilung X arbeiten, oder alle Mitarbeiter, die über die Fachkompetenz Y verfügen. Natürlich möchte ich, dass die Arbeitsblatttabellen aktualisiert werden, wenn Daten im Hauptdatensatz geändert oder hinzugefügt werden.
Habe ich Recht in der Annahme, dass es hier eine einfache Lösung gibt, oder muss ich es mithilfe einer echten Datenbank angehen?
Antwort1
Ich möchte eine Methode vorschlagen, die auf einer Excel-Funktion basiert und Datensätze aus der Quelltabelle in eine andere filtert/extrahiert.
Quelltabelle:
Wie es funktioniert:
- Wenn die Kriterienzellen leer sind, gibt die Formel keinen Datensatz zurück.
- Die Formel funktioniert sowohl für einzelne als auch für mehrere Kriterien.
Situation 1:
Situation 2:
- Array-Formel in Zelle
B31
:
{=IFERROR(IF(AND(ISBLANK($B$27),ISBLANK($C$27),ISBLANK($D$27),ISBLANK($E$27),ISBLANK($F$27),ISBLANK($G$27),ISBLANK($H$27))," ",INDEX($B$2:$H$21,SMALL(IF(MMULT(($B$2:$H$21=$B$27:$H$27)*1,{1;1;1;1;1;1;1})=COUNTA($B$27:$H$27),MATCH(ROW($B$2:$B$21),ROW($B$2:$B$21)),""),ROWS($A$1:A1)),COLUMNS($A$1:A1))),"")}
- Beenden Sie die Formel mitStrg+Umschalt+Eingabeund quer ausfüllen.
- Das Hauptmerkmal dieser Übung ist
MMULT
die Funktion. - MMULT (Matrixmultiplikation) gibt das Matrixprodukt zweier Arrays zurück.
- Die Spaltenanzahl von Array1 entspricht der Zeilenanzahl von Array2.
- Das Array-Ergebnis enthält dieselbe Anzahl an Zeilen wie Array1 und dieselbe Anzahl an Spalten wie Array2.
Passen Sie die Zellbezüge in der Formel nach Bedarf an.