2017-04-12 9 views
0

Bei der Arbeit haben wir ein Arbeitsblatt mit mehreren (40-50) Arbeitsblättern. Jedes Arbeitsblatt repräsentiert eine bestimmte Studie. Auf jedem Blatt befinden sich mehrere Personen mit einem Namen, Nachnamen, Studienbeginn (Datum), Geburtstag usw. Und wir haben ein Arbeitsblatt mit einer Übersicht. (Arbeitsblattstudie 1, Arbeitsblattstudie 2, Arbeitsblattstudie 3).erhalten Sie bestimmte Jahre aus anderen Blättern

Gibt es eine Möglichkeit, dass ich eine Spalte auf Übersicht platzieren kann, und filtern Sie auf die Personen, die eine Studie beigetreten sind. (also alle Personen, die im Jahr 2016 an einer Studie teilgenommen haben, aber nicht diejenigen, die dies nicht getan haben.) Ich habe eine Kolumne mit dem Beginn einer Studie, aber Menschen können einer Studie nach dem Beginn einer Studie beitreten.

Ich habe schon versucht, einen Filter zu verwenden, und einige Sachen mit Datenvalidierung versucht, aber ich bin nirgends nah an einer Lösung. Gibt es jemanden, der mich auf die richtige Spur bringen kann?

+3

Ich bin kein Excel-Guru, aber 50 Arbeitsblätter klingt wie am Rande der nicht wartbar und fehleranfällig. Wenn ich Sie wäre, würde ich diese Daten in eine Datenbank bringen, wo es wahrscheinlich leicht wäre, Ihre Frage zu beantworten. –

+0

Ich bin mir dessen bewusst, und ich empfehle immer DB's (entweder sei es sql, Zugriff oder Filemaker) aber das ist ein Excel gemacht von jemandem in den "frühen Tagen": D. Scheint, ich werde sie zu einer dieser Lösungen vorstellen müssen. Danke trotzdem für einen Blick. –

Antwort

1

Ich mache einige Annahmen hier:

  • Ich gehe davon aus, dass jedes Arbeitsblatt für eine Studie im gleichen Format ist
  • Die Menschen in einer Studie (die Daten, die Sie wollen) in einem standardisierte Position auf jedem Blatt

Eine Lösung wäre, etwas Code in VBA zu tun. Sie könnten jedes Blatt (das heißt natürlich nicht "Übersicht") durchlaufen und einer Variablen den Bereich zuweisen, in dem die zu prüfenden Details gespeichert werden. Anschließend durchlaufen Sie jede Zelle in diesem Bereich und zeichnen die Namen in einem Array auf von jedem, der die Kriterien erfüllt.

Zum Beispiel, wenn jede Ihrer Studienblätter hat eine Liste der Teilnehmer wie folgt aus: Participant List

Sie würden die Bereichsvariable als [Arbeitsblatt] .Range define („A5: A12“), und sagen:

For Each <cell> in <range>.Cells 
If Year(<Worksheet>.Cells(<cell>.Row, <cell>.column + 1).Value) = 2017 Then 
<assign the contents of <cell> to an Array> 
Next <cell> 

Sobald Du durch jedes Arbeitsblatt gegangen bist, wird der Inhalt des Feldes kann Ausgabe an eine beliebige Stelle, entweder auf dem Übersichtsblatt oder anderswo sein. Dies wäre eine Grundidee für eine Möglichkeit, dies zu tun. Ich würde jedoch betonen, dass Ihre Daten genau wie die Dinge klingen, für die eine MS Access Database ideal wäre (Ich weiß aus eigener Erfahrung, dass einige Unternehmen/Abteilungen Angst vor allem haben, was nicht Excel ist, also fühle ich Ihre Schmerzen !)

Verwandte Themen