Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

Schüler anordnen

Schüler anordnen
Meli
Hallo,
ich habe folgendes Problem: Ich habe eine Liste von Eltern mit eins bis zu vier oder fünf Kinder.(siehe Input-blatt). Deren Geburtsmonat und Jahr werden rechts eingeschrieben.
Nun möchte ich aber eine Übersicht der Kinder erstellen (siehe Ergebnisblatt), wo untereinander jedes Kind mit dem dazugehörigen Elternname (+e-mail, PLZ, und ob es deutsch oder Englisch spricht) erscheint.
Mit Pivottabelle bekomme ich das so nicht hin :-(..und sonst meine andere Formelkenntnisse helfen mir auch nicht weiter.
Zusätzlich soll dann bei jedem Kind überprüft werden, wann sie schulpflichtig werden (siehe Tabelle unter "Ergebnis") und dann im jeweiligen Spalte eine 1 reinschreiben. Wenn Kinder älter als Okt 2005 sind, dann nicht mehr berücksichtigen.
Ich lade dazu die Beispieldatei
https://www.herber.de/bbs/user/74306.xls
Es wäre super, wenn ihr mir helfen könntet, damit ich mir viel Arbeit sparen kann.
Vielen lieben Dank im voraus für Eure Hilfe. Gruß, Meli

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schüler anordnen
08.04.2011 12:20:44
Hubert
Hallo Meli
hier ist mein Vorschlag. Schau ihn dir mal an.
Das Tabellenblatt "Ergebnis" wird über den Button "Tabelle erstellen" befüllt.
Alle Felder, die gelb unterlegt sind, da habe ich Formeln eingefügt.
Das Tabellenblatt "Hilfstabelle" habe ich eingefügt, da es für das Makro gebraucht wird.
Der entsprechende Code für das Makro kann ( und muss wahrscheinlich auch) natürlich erweitert werden.
Er könnte natürlich auch noch etwas aufgeräumter geschrieben werden, aber das habe ich
jetzt noch nicht probiert.
https://www.herber.de/bbs/user/74316.xls
Gruß, Hubert
Anzeige
AW: Schüler anordnen
08.04.2011 20:27:09
Meli
Hallo,
@Walter: vielen Dank für deine Makro. Es ist interessant, aber für diesen Zweck kann ich es leider nicht verwenden, weil ich dann alle Schüller von jeder Spalte zusammenzählen muss. Und dann noch die Monate dazuspielen. Aber sicherlich werde ich mal für einen anderen Zweck dies benutzen können.
@Hubert: ebenfalls vielen Dank für deine Makro. Das ist genau die Lösung die ich gesucht habe. Jetzt muss ich nur noch auf meine echte Datei übertragen und hoffen, dass es funktioniert :-))
Vielen lieben Dank nochmal. Ihr habt mir sehr geholfen!!!
AW: Schüler anordnen
08.04.2011 21:37:05
Meli
Hallo,
in dem Makro von Hubert, was mir sehr geholfen hat (https://www.herber.de/bbs/user/74306.xls) gibt es einen Abschnitt, dass ich so oft wiederholen muss wieviele Elternzeile vorhanden....und da sind ca. 100 Zeilen :-(
Bsp:
Range("C15").Select
Sheets("Inputsdatei").Select
Range("Y4:AF4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Hilfstabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
nächstes wäre dann mit "C15"+6 = "C21", danach "C27", "C33", "C39" etc.
und "Y4:AF4"+ 1= ""Y5:AF5", danach "Y6:AF6","Y7:AF7", "Y8:AF8" etc.
also würde der nächste heißen:
Range("C21").Select
Sheets("Inputsdatei").Select
Range("Y5:AF5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Hilfstabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Range("C27").Select
Sheets("Inputsdatei").Select
Range("Y6:AF6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Hilfstabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
und so weiter. Und dies müßte ich dann ca. 100mal (wenn nicht 200 später) kopieren, damit die Liste abgearbeitet wird.
Frage: Gibt es eine Wiederholungsmöglichkeit dieses Abschnittes mit der Abänderung dieser zwei Zellen?
Danke im voraus,
Meli
Anzeige
AW: Schüler anordnen
09.04.2011 01:05:31
Hubert
Hallo Meli
hier ein erster neuer Versuch mit abgeändertem Code.
Er erfragt sich die Anzahl der Eltern und macht dann genau so viele Durchläufe.
Egal, ob 10 oder 200.
Die Anzahl der Eltern holt sich der Code aus Blatt Inputsdatei, Zelle AG1. Dort hab ich
eine Formel hingestellt.
Schau es dir mal an. Vielleicht hilft es schon mal wieder ein wenig weiter.
https://www.herber.de/bbs/user/74322.xls
Viele Grüße
Hubert
OT an Hubert
09.04.2011 03:10:56
Mustafa
Hallo Hubert,
die ganze selectierei in deinem Code ist überflüssig und macht den Code auch wenn er noch so kurz ist langsamer und auch unübersichtlicher.
In 99% der Fälle ist Select überflüssig und kann umgangen werden.
Ich hatte mir mal erlaubt deinen Code etwas zu säubern und wieder hier hochzuladen.
Kannst es dir ja in einer ruhigen minute mal ansehen.
Für deine For Next Schleife kannst du aber die letzte befüllte Zelle wo die Namen drin stehen auch so im Code auslesen ohne Formel:
j = Worksheets("Inputsdatei").Cells(Rows.Count, 1).End(xlUp).Row
PS: Noch ein kleiner Rat nebenbei, gewöhn dich ans Deklarieren deiner Variablen, am besten geht das wenn du im VBA Editor unter Extras--Optionen--Register Editor die Variablendeklaration erforderlich anhakst. Durch deklarierte Variablen kannst du Fehler einfacher und schneller finden.
Wenn du diese Option anhakst wird VBA jedes mal wenn er eine undeklarierte Variable erkennt diese anmeckern, manchmal ist es dann einfach nur ein Tippfehler bei der Variablen.

Gruß aus der Domstadt Köln.
Anzeige
AW: OT an Hubert
09.04.2011 22:40:37
Hubert
Hallo Mustafa
Danke für deine Anregungen und Tipps. Du hast Recht, die ganze Selektiererei
ist nicht das Wahre. Ich habe mir deinen überarbeiteten Code angesehen, versucht, daraus zu
lernen und daraufhin meine Datei noch einmal selbst überarbeitet und versucht, alles so gut wie ohne Select zu schreiben und deine Tipps einzubringen.
Siehe z.B. letzte befüllte Zeile, löschen von den leeren Zeilen und auch die Sache mit der Deklaration von Variablen.
Vor allem wollte ich es für mich selbst noch einmal machen, da es dann besser haften bleibt.
Nochmals Danke, tolle Hilfen gibt es hier.
Viele Grüße,
Hubert
Anzeige
Gern geschehen
10.04.2011 22:58:59
Mustafa
Hallo Hubert,
auch ich habe die meisten Dinge hier im Forum durch learning by doing angeiegnet, darum versuch ich mein erlerntes hier wieder einzubringen.
Freut mich das ich dich dazu anregen konnte noch mehr zu lernen.
Gruß aus der Domstadt Köln.
AW: Schüler anordnen
09.04.2011 01:10:21
Mustafa
Hallo Meli,
hier mal eine optimierte Version von Hubert's Datei ohne die ganze selectiererei :
https://www.herber.de/bbs/user/74323.xls
Ich hab im Code die Zeilen markiert die für eine Anpassung relevant sind.
Wenn noch Fragen sind immer stellen :-)
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.
Anzeige
AW: Schüler anordnen
09.04.2011 22:11:28
Meli
Hallo Mustafa,
vielen lieben Dank für deine elegante Makro für meine Lösung. Ich habe sie auf meine echte Datei rüberkopiert und ein paar Anpassungen gemacht:
1. Schleife soll bis max. Zeile 200 (von Inputsdatei) gehen
2. Von Inputsdatei soll er nicht alle 8 Spalten mit Kindern kopieren, sondern nur 6.(weil es sehr unwahrscheinlich ist, dass jemand wirklich 8 Kinder hat).
3. In der Hilfsdatei soll er den Bereich A3:G1250 sicherheitshalber ins Ergebnistabelle kopieren (wenn nämlich 200 Zeilen haben werde a 6 mögliche Kinder)
4. Im Ergebnisdatei von max. 200 Zeilen ausgegangen
So: habe den unten stehenden Makro ausgeführt, und dann ist er bei Zeile 55 in Ergebnistabelle stehengeblieben. ...und diesen "Satz" wks2.Range("A3:G1250").Copy gelb markiert.
Ich bin nicht draufgekommen, wo mein Fehler liegen könnte. Kannst du mir bitte da weiterhelfen?
Vielen Dank im voraus.
Sub ErgebnistabelleAktualisieren()
Dim wks1 As Worksheet, wks2 As Worksheet, wks3 As Worksheet
Dim lngZeile1 As Long, lngZeile2 As Long
Dim Zelle As Range
Application.ScreenUpdating = False
Set wks1 = Worksheets("Inputsdatei")
Set wks2 = Worksheets("Hilfstabelle")
Set wks3 = Worksheets("Ergebnis")
' Schleife reicht bis Zeile 200 in der Inputsdatei. Wenn mehr, dann muss man unten anpassen.
For lngZeile1 = 2 To 200
If lngZeile2 

Anzeige
AW: Schüler anordnen
09.04.2011 22:22:21
Meli
Hallo Mustafa,
meine Frage hat sich erledigt. Ich habe den Fehler gefunden.
Vielen lieben Dank nochmal für deine Hilfe!!!
Gruß, Meli
AW: Schüler anordnen
09.04.2011 22:29:35
Hubert
Hallo Meli
wahrscheinlich klappt es bei dir schon, aber hier ist auch noch einmal eine neue Version von mir.
Den Code habe ich aufgrund der Tipps von Mustafa noch einmal überarbeitet und
hoffe, es ist soweit o.k.
Schau es dir doch auch einmal an.
https://www.herber.de/bbs/user/74326.xls
Viele Grüße, Hubert
Danke für die Rückmeldung owt
10.04.2011 23:00:22
Mustafa

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige