Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe mit Arrays

Hilfe mit Arrays
15.12.2015 08:29:13
Mike
Hallo zusammen
Ich wäre euch sehr dankbar für Hilfe mit einem Array. Mein Problem:
Ich habe eine Datenbasis von über 160'000 Einträge mit Personalnummern, Geburtstagen sowie Ausbildungen zu Berufen. Ich möchte nun zu jeder Personalnummer die höchste Ausbildung heraussuchen und dies zu dem ersten Eintrag der Personalnummer schreiben(Liste, welches die Reihenfolge definiert ist in einem 2. Tabellenblatt notiert). Falls jemand eine bestimmten Rang an Ausbildungen absolviert hat, sollte in der Zeile daneben ein "erfüllt" stehen. Falls jemand eine etwas tiefere Ausbildung hat, dafür aber über 45 Jahre alt ist, sollte stehen "erfüllt ü45". Falls diese Person eine noch tiefer Ausbildung hat, aber über 45 sollte stehen "nicht erfüllt aber ü45" und sonst "nicht erfüllt".
Soweit habe ich dies auch schon hinbekommen, jedoch benötigt es für die Berechnung der Tabelle etwa 3h 45m. Ich nehme einmal an, dass es mit einem Array um ein wesentliches schneller gehen würde.
Da ich die Berechnungen öfters machen müsste, wäre ich wirklich sehr dankbar für eine Hilfe um die Laufzeit zu verbessern.
Vielen Dank um Voraus
Mike
Link zur Test-Datei:
https://www.herber.de/bbs/user/102257.xlsm

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe mit Arrays
15.12.2015 09:01:33
Daniel
Hi
übertrage die Rangstufe der jeweiligen Ausbildung nach Tabelle1 mit Hilfe der Formel (Formel für Zeile2)
=INDEX(Daten!AB:AB;VERGLEICH(C2;Daten!AC:AC;0))
sortiere die Tabelle nach
1. Personalnummer
2. Rangstufe der Ausbildung absteigend
die höchste Ausbildungstufe steht dann immer beim ersten Eintrag zur Personalnummer
das Erfüllt in Spalte H kannst du dann mit dieser Formel berechnen (die Rangstufe der Ausbildung habe ich in Spalte D eingespielt):
=Wenn(A2=A1;"";wenn(D2>?;"erfüllt";Wenn(Und(D2>?;(Heute()-B2)>365,25*45);"erfüllt Ü45"; wenn((Heute()-B2)>365,25*45);"nicht erfüllt aber Ü45";nicht erfüllt")))) 
entscheidend für die Beschleunigung ist hier das richtige Sortieren, damit du die höchste Ausbildungsstufe an definierter Stelle hast und nicht jedesmal in der gesamten Tabelle suchen musst.
Im Sortieren ist Excel sehr schnell, das sollte man nutzen.
Gruß Daniel

Anzeige
AW: Hilfe mit Arrays
15.12.2015 10:35:27
Mike
Ciao Daniel
Mann... dass ich da nicht selber drauf gekommen bin... warum einfach wenn's kompliziert geht. :) Vielen Herzlichen Dank für deinen Tipp. Das geht doch um einiges schneller statt 3h45m noch knapp 2 Sekunden (inklusive ersetzen der Formeln durch Werte). Würde mich aber trotzdem noch Wunder nehmen, ob die Lösung auch in einem Array machbar wäre, bin eigentlich Fan von Arrays aber ich habe dies noch nicht wirklich verstanden, auch mit durchlesen von Zig Forumbeiträgen :(
Vielen Dank nochmals, du hast mir viel Zeit erspart und wünsche eine schöne Weihnachtszeit.
Viele Grüsse
Mike

Anzeige
AW: Hilfe mit Arrays
15.12.2015 10:45:23
Daniel
Hi
kannst du im Prinzip auch mit Arrays machen.
hilfreich ist hierbei die Verwendung des Dictionary-Objektes, welches im Prinzip ein eindimensionales Array ist, welches als Index einen Freitext verwendet.
damit sollte sich das ganze in einem Schleifendurchlauf erledigen lassen.
Gruß Daniel

AW: Hilfe mit Arrays
15.12.2015 10:54:35
Mike
Ok... und genau da habe ich das Problem, wie das mit Formeln in Schleifen Funktioniert in einem Array. Aber nicht so wichtig, werde sicherlich wieder einmal eine Array-Frage haben. Nun habe ich ja das Problem durch deine Hilfe gelöst.

hätte noch Fragen dazu...
15.12.2015 09:04:23
Tino
Hallo,
verstanden habe ich es was du möchtest.
Was ich noch nicht verstanden habe, mit dem erfüllt usw.
1. wo ist die Stufe für erfüllt (steht mehrmals in Tabelle2)
2. wo ist die etwas tiefere Stufe wenn ü45. (für erfüllt ü45)
3. wo ist die noch tiefere Stufe wenn ü45. (für nicht erfüllt aber ü45)
Gruß Tino

Anzeige
AW: hätte noch Fragen dazu...
15.12.2015 10:08:12
Mike
Ciao Tino
Vielen Dank für die schnelle Antwort. Im Tabellenblatt "Daten" ist das Ranking (ab Spalte AA). Wobei von oben nach unten kontrolliert werden sollte. Der höchste Abschluss steht in Zeile 8, der tiefste Abschluss steht in Zeile 25. Beim Ranking (Spalte AB) heisst dies, dass wenn jemand eine Ausbildung von 1-7 hat ist es erfüllt. Wenn jemand eine Ausbildung von 8 bis 12 hat ist es nur erfüllt, wenn zusätzlich auch das Alter ü45 ist. Vom Platz 13 - 18 ist es nicht erfüllt, einfach mit der Zusatzinfo, falls die Person ü45 ist.
Viele Grüsse
Mike

AW: hätte noch Fragen dazu...
15.12.2015 10:16:30
Daniel
Hi Mike
wie wärs, wenn du erstmal alle Beiträge liest, bevor du einem antwortest ?

Anzeige
AW: hätte noch Fragen dazu...
15.12.2015 10:37:46
Mike
Sorry, hab deinen Beitrag erst nachher gesehen...

hier mal ein versuch
15.12.2015 11:01:24
Tino
Hallo,
habe es mal so versucht.
Ergebnis sollte eigentlich so passen, kannst ja mal überprüfen.
Habe jetzt leider keine Zeit mehr dafür.
https://www.herber.de/bbs/user/102265.xlsm
Gruß Tino

AW: hier mal ein versuch
15.12.2015 12:57:23
Mike
Hallo Tino
Super, genau so etwas habe ich gesucht. Vielen herzlichen Dank. Nun muss ich das nur noch irgendwie einmal verstehen, damit ich in Zukunft selber Arrays erstellen kann. Wo kann man so etwas erlernen?
Wünsche dir eine gute Zeit
Viele Grüsse
Mike
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige