Hallo,
habe folgendes Excel-Problem:
Habe zwei Tabellenblätter in einer Arbeitsmappe:
Im ersten Tabellenblatt ("Namen") stehen 33 Zeilen (für potentielle 33 Schüler), die - je nachdem, wie viele es dann in einer Klasse tatsächlich sind - automatisch über "Bedingte Formatierung" über die Funktion ISTLEER formatiert werden und so gleichzeitig eine Klassenliste mit formatierter Tabelle liefern.
Die Numerierung der Schüler liefert mir automatisch die Formel (Zeilen 1-6 sind Überschriften):
=WENN(ISTLEER(B8);"";ZEILE(A8)-6)
=WENN(ISTLEER(B9);"";ZEILE(A9)-6)
usw.
Im zweiten Tabellenblatt ("Noten") steht nun jeweils mit einem Bezug auf das erste Tabellenblatt in wiederum 33 Zeilen (für 33 potentielle Schüler):
=WENN(ISTLEER(Namen!B7);"";Namen!B7)
=WENN(ISTLEER(Namen!B8);"";Namen!B8)
usw.
Ich will also, daß hier nur die Namen angezeigt werden, die vorne in "Namen" auch vorhanden sind.
Dies klappt auch ganz gut, solange aus der Liste in "Namen" keine Zeile nachträglich herausgelöscht wird (z. B. beim nachträglichen Wechsel eines Schülers in eine andere Klasse).
Löscht man nun aber eine Zeile in "Namen", bekomme ich hinten die entsprechende Zeile mit einem Bezugsfehler (#BEZUG!). Es stimmt dann zwar die weitere Numerierung, aber ich bekomme eben in meiner Notenliste hinten (im Tabellenblatt "Noten") die unschönen Zeilen mit Fehlermeldungen.
Wie kriege ich es hin, daß das Tabellenblatt "Noten" beim Löschen einer Namenszeile, sagen wir der Zeile 7, aus dem Tabellenblatt "Namen" einfach die "neue" Zeile 7 (also den ursprünglich in Zeile 8 stehenden Schülerdatensatz) anzeigt und so die "häßlichen" Fehlerzeilen in meiner Notenliste vermieden werden?
Ich habe schon mit absoluten Zellbezügen gearbeitet ($B$7), was aber nichts daran ändert, daß Excel "merkt", daß der ursprünglich in Zeile 7 von "Namen" stehende Bezug jetzt "weg" ist.
Vielen Dank schon im voraus für Eure Hilfe.
Gruß
Struppi
Latein- und Franzpauker
Office - Word, Excel und Co. 9.753 Themen, 41.598 Beiträge
Das ist sicherlich nur mit einem Makro zu realisieren.
Aber warum nimmst Du denn zwei Tabellenblätter?
Geht das nicht mit einem?
Hallo, Peterson,
danke für Deine Antwort!
Wie könnte denn so ein Makro aussehen? Wäre - wenn ich drüber nachdenke - nicht ganz trivial (für mich jedenfalls, auch wenn ich mich während meinen Jahren bei Telekom eingehend mit Makros beschäftigt habe...), denn ich will ja die Zahl der Zeilen (=> 33) im zweiten Tabellenblatt nicht reduzieren (löschen der Zeile auch dort wäre sicher nicht so kompliziert), sondern nur alle, die ursprünglich darunter lagen, einfach um eins nach oben rutschen lassen.
In einem Tabellenblatt geht's nicht, weil sich aus dem Blatt "Namen" auch noch andere Datensenken speisen.
Gruß
Struppi
Das liegt aber daran, daß ich mir nicht genau vorstellen kann, wie Deine Tabellen tatsächlich aussehen.
In der 1. Tabelle kann man z.B. mir einem Makro feststellen, wie viele Daten untereinander eingetragen sind. Da läßt man solange eine Schleife in der Spalte laufen, bis er auf eine leere Zell trifft.
Mit dieser Information muß man dann in der anderen Tabelle arbeiten.
Zur Info:
Die Zellbezüge "$B$7" beziehne sich nur auf die Zelle, wo diese drinstehen.
Angenommen, die stehen bei Dir in Z1, dann kannst Du sie zB nach Z2 verschieben und sie behalten den Wert "$B$7". Allerdings, wenn Du die Quelle veränderst, dann fehlt der Bezug.
Aber vielleicht machst Du Deine Arbeit mit ACCESS, da kannst Du Tabellen verknüpfen.
Solltest Du keinN ACCESS haben, so besorge Dir das kostenlose Programm DataMaker.
Bei der kostenlosen Software ist nur die Datenmenge auf 200 begrenzt. Aber da passen Deine 33 Einträge ja beliebig rein.
========================================================
Da fällt mir noch was ein.
Man kann den Zellen ja Namen geben. Dann wird nicht mehr auf $B$7 zugegriffen, sondern zB. auf "schüler1".
Ob sowas funktioniert, habe ich allerdings noch nie probiert.
Hallo,
musst du die Zeile denn löschen, oder kannst du die Zeile einfach ans Ende der Liste verschieben und dann nur den Namen löschen, so dass die istleer Abfrage wieder greift?
Oder ein anderer Ansatz ist noch, die mittels Autoausfüllen wieder neu aufzubauen, das dann über ein Makro automatisieren.