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

Lernkarten erstellen mit Zellenverweise auf Liste

Lernkarten erstellen mit Zellenverweise auf Liste
28.07.2019 22:28:02
Peter
Hallo zusammen
Beispieldatei: https://www.herber.de/bbs/user/131138.xlsm
Ich habe die Tabellen Liste und Karten. In der Liste stehen in der Spalte A die Fragen und der in der Spalte B die dazugehörenden Antworten.
In der Tabelle Karten werden die Lernkarten der Liste erstellt.
Die Tabelle Karten hat pro Tabellenblatt nur 3 Spalten und 8 Zeilen (entsprechend der Grösse einer Lernkarte).
Die Tabelle Karten wird doppelseitig ausgedruckt, damit auf der Vorseite der Lernkarten die Fragen und auf der Rückseite die Antworten zu sehen sind.
Entsprechend "gegenläufig" oder in umgekehrter Reihenfolge werden die Zellenverweise zur Liste erstellt. Die Tabellenblätter der Karten mit ungerader Seitenzahl enthalten die Fragen und entsprechend die geraden Tabellenblätter die Antworten, siehe Beispiel-Excel Datei im Anhang, Link.
Das Problem bei der Formellösung ist, wird in der Liste eine Zeile gelöscht, dann stimmen die Zellenverweise in der Tabelle Karte nicht mehr. Aus diesem Grund suche ich eine VBA Lösung, die mir die Verweise per Knopfdruck neu erstellt.
Mit meinen bescheidenen VBA-Latein bin ich da total überfordert, hat jemand eine Idee wie man diese Fragestellung lösen könnte, wie müsste so ein Script aussehen?
Vielen Dank für Eure Hilfe.
Viele Grüsse,
Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lernkarten erstellen mit Zellenverweise auf Liste
28.07.2019 23:34:51
{Boris}
Hi Peter,
wenn Du statt direkten Zellverweisen die INDEX-Variante nutzt, dann kannst Du auch nach Belieben löschen.
Die Formeln für die ersten Karte (Vor- und Rückseite):
A1: =INDEX(Liste!A:A;ZEILEN($1:1)*3-2)
B1: =INDEX(Liste!A:A;ZEILEN($1:1)*3-1)
C1: =INDEX(Liste!A:A;ZEILEN($1:1)*3)
und alle Formeln bis Zeile 8 runterkopieren.
Durch das Runterkopieren erhöht sich der Zähler ZEILEN($1:1) jeweils um 1 auf ZEILEN($1:2), ZEILEN($1:3) etc.
Die Rückseite in Englisch:
A9: =INDEX(Liste!B:B;ZEILEN($1:1)*3)
B9: =INDEX(Liste!B:B;ZEILEN($1:1)*3-1)
C9: =INDEX(Liste!B:B;ZEILEN($1:1)*3-2)
Alle bis Zeile 16 runterkopieren.
Für die 2. Karte nimmst Du die selben Formeln - beginnst aber 8 Zeilen weiter.
Also nicht ZEILEN($1:1), sondern ZEILEN($1:9)
Für die 3. Karte dann wieder 8 Zeilen mehr: ZEILEN($1:17)
Usw. usw.
Kommst Du damit klar?
VG, Boris
Anzeige
AW: Lernkarten erstellen mit Zellenverweise auf Liste
29.07.2019 18:26:37
Peter
Hallo Boris
Die Formellösung funktioniert tip top, auch wenn eine Zeile hinzugefügt oder entfernt wird sind alle Verknüpfung da und vollständig, sehr gut!
Vielen Dank für Deine Hilfe!
Einen kleinen Hacken hat diese Formellösung jedoch. Nebst der zeitaufwendigen Erstellung (Hauptsache ist jedoch, dass ich überhaupt eine Lösung habe), ist die Datei ziemlich träge geworden. In der zwischen Zeit habe ich viele Wörter und Lernkarten erstellt. Im Weiteren habe ich drei verschiedene Lernkartengrössen kreiert (Lernkartengrösse pro Blatt: 3x8=24, 2x5=10 und 1x2=2). Insbesondere reagiert die Datei sehr langsam wenn ich in den Tabellenblätter der Lernkarten bin, im Speziellen in der 1x2 Lernkarten-Variante.
Könnte es sein, weil es in dieser Variante nur eine Spalte gibt, Deine Formel jedoch ursprünglich für drei Spalten ausgelegt ist, dass das Ganze deswegen sehr langsam wurde? Die Formel für die ein Spaltenvariante habe ich wie folgt angepasst:
(auch wenn ich das *1 weglasse, ich glaube das braucht es bei der Einspaltenvariante nicht mehr, wird das Ganze nicht schneller)
Für die Vorderseite (Deutsch):
A1: =INDEX(Liste!A:A;ZEILEN($1:1)*1)
A2: =INDEX(Liste!A:A;ZEILEN($1:2)*1)
Für die Rückseite (Englisch):
A3: =INDEX(Liste!B:B;ZEILEN($1:1)*1)
A4: =INDEX(Liste!B:B;ZEILEN($1:2)*1)
Damit ich keine Nullwerte habe, habe ich im weiteren alle Formeln generell wie folgt angepasst:
=WENN(INDEX(Konsolidierung!$A:$A;ZEILEN($1:1)*2-1)>0;INDEX(Konsolidierung!$A:$A;ZEILEN($1:1)*2-1);"")
Siehst Du da noch Verbesserungspotential oder gibt es vielleicht doch eine VBA-Lösung, auch wenn ich schon viel Zeit in diese Lösung investiert habe?
Danke für Deine Unterstützung.
Viele Grüsse,
Peter
Anzeige
Schwer zu beurteilen...
30.07.2019 11:17:49
{Boris}
Hi,
...da wir offensichtlich nicht mehr über die von Dir hochgeladene Datei sprechen (ein Blatt "Konsolidierung" gibt es dort nicht).
VG, Boris
AW: Anbei die original Datei
30.07.2019 14:03:33
Peter
Hallo Boris
Danke für Deine Antwort und sorry, natürlich geht es mit der Datei besser, anbei den Link.
https://www.herber.de/bbs/user/131157.xlsm
Danke für Deine Unterstützung.
Viele Grüsse,
Peter
Schwierig...
30.07.2019 15:08:17
{Boris}
Hi Peter,
...wenn es tatsächlich an den (vielen) Formel liegen sollte, könntest Du natürlich die Bezüge auch per VBA herstellen.
Um das Prinzip zu zeigen, missbrauche ich jetzt mal im Blatt "Karten_3x8" die Zellen D1 bis D8 (in real nimmst Du dafür ein separates Tabellenblatt oder separate / ausgeblendete Spalten):
Dort schreibst Du in D1:
Konsolidierung!A1
Und in D2:
Konsolidierung!A4
Markiere beide und ziehe sie bis D8 runter. Damit hast Du die gewünschten Verweise für die erste Karte in Deutsch als TEXT.
Um jetzt diese Verweise in die Karte im Bereich A1:A8 zu bekommen, nutzt Du folgenden Code:
Sub Verknuepfungen_generieren()
Dim x As Long
For x = 1 To 8
Cells(x, 1).Formula = "=" & Cells(x, 4)
Next x
End Sub
Natürlich ist das am Ende ne Fleißarbeit - aber wenn es die Performance erheblich verbessert, dann war es das vielleicht wert...?
VG, Boris
Anzeige
AW: Schwierig...
31.07.2019 10:10:57
Peter
Hallo Boris
Alles klar, Danke nochmals für Deine Unterstützung.
Viele Grüsse,
Peter

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige