Ich möchte eine Liste erstellen, die auf der Auswahl der Schüler basiert

681
Erica Engelby

Ich habe mehrere Schüler, die ausgewählt haben, in welchen Klassen sie auf dem ersten Blatt sein wollen. Auf dem zweiten Blatt möchte ich für jede Klasse eine Liste mit den Namen der Schüler dieser Klasse erstellen, die auf deren Auswahl basiert. Gibt es eine Möglichkeit, dies zu tun?

enter image description here

0
Mit Scripting ja, mit Excel-Formeln glaube ich nicht. thepip3r vor 5 Jahren 1
Es kann mit Formeln gemacht werden, aber nicht so einfach oder sauber wie VBA (nicht, dass VBA trivial wäre). Möglicherweise ist es sogar mit einem Pivot-Tisch möglich. Super User ist kein kostenloser "Write me code" -Dienst, daher wird es als unzulässig angesehen, nur eine Anforderung zu veröffentlichen. Wenn Sie sich jedoch selbst damit befassen und auf ein bestimmtes Problem stoßen, helfen Ihnen hier die Leute, dieses Problem zu lösen, wenn Sie Ihre Arbeit posten und das Problem beschreiben. fixer1234 vor 5 Jahren 0
@ thepip3r kann mit Formeln gemacht werden Forward Ed vor 5 Jahren 0
@ fixer1234 Völlig einig, dass die Formeln nicht sauber sind! Forward Ed vor 5 Jahren 0

1 Antwort auf die Frage

2
Forward Ed

1) Erzeugen Sie eine Kopfzeile mit Kursnamen

Zunächst einmal müssen Sie in Sheet2 eine horizontale Klassenliste erstellen. Sie können dies entweder manuell tun oder Sie können die folgende Formel verwenden, um eine sortierte Liste der verwendeten eindeutigen Klassennamen aus den Auswahlmöglichkeiten der Schüler für Klasse 1-3 zu generieren. Es sollte sogar funktionieren, wenn leere Klasseneinträge ignoriert werden. Die einzigen zwei Einschränkungen, die mir einfallen, sind, dass Sie die Zelle links von der Liste haben müssen, die mit einem der Namen in der Liste übereinstimmt. Der andere Nachteil ist, dass dies eine Matrixformel ist und CONTROL+ SHIFT+ erfordert, ENTERanstatt nur ENTERdie Formel zu bestätigen. Sie werden wissen, dass Sie es richtig gemacht haben, wenn {} in der Formel angezeigt wird. Beachten Sie, dass {} möglicherweise nicht manuell hinzugefügt wird.

Im Beispiel habe ich die folgende Formel in Sheet2! B2 eingefügt und nach rechts kopiert, bis leere Zellen angezeigt wurden.

=IFERROR(INDEX(Sheet1!$B$2:$D$9,SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),MATCH(MIN(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)>0,"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1)),INDEX(IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),,1),0),1),"") 

Verwenden Sie als Arrayformel keine vollständigen Zeilen- / Spaltenreferenzen wie A: A oder 3: 3, da sonst zu viele Berechnungen ausgeführt werden.

2) Erzeugen Sie eine Liste mit Namen

Um eine Spalte mit Namen zu generieren, die den Kurs in der Kopfzeile als eine ihrer drei Optionen auswählt, kann die folgende Formel verwendet werden. Im folgenden Beispiel wurde diese Formel in Sheet2! B3 platziert und nach rechts kopiert, um die Liste der Kursnamen abzugleichen, und so lange, bis nur noch leere Zeilen vorhanden sind.

=IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(14,6,ROW(Sheet1!$B$2:$D$9)/(Sheet1!$B$2:$D$9=B$2),ROW(A1))),"") 

Die AGGREGATE-Funktion kann abhängig von der ausgewählten Formelnummer Array-ähnliche Operationen ausführen. Wenn die erste Parameternummer 14 oder 15 ist und anscheinend einige andere, werden Array-ähnliche Operationen ausgeführt. Der zweite number-Parameter weist AGGREGATE an, Fehlerergebnisse zu ignorieren, verborgene Zeilen zwischen einigen anderen Dingen, die ich glaube. Vermeiden Sie als Ergebnis der Array-ähnlichen Berechnungen die Verwendung vollständiger Spaltenverweise innerhalb der AGGREGATE-Funktion.

Quelle: Blatt1

Ausgabe: Sheet2

WENN ein Schüler denselben Kurs mehr als einmal wählt, erscheint sein Name mehr als einmal in der Liste.

Du hast mich falsch bewiesen. Es war ** unbedeutend. :-) +1 fixer1234 vor 5 Jahren 0
Sieht abscheulich aus, nicht trivial. ;) thepip3r vor 5 Jahren 0
Gott verbiete, dass du ein Komma oder eine Klammer verlegst! Obwohl ich gelernt habe, buchstabiere ich widersprüchlich Biologie. Forward Ed vor 5 Jahren 0