Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ich bekomms nicht hin

ich bekomms nicht hin
04.09.2006 13:24:07
Stefan
Hallo Experten,
habe die Frage am 28.8. schon einmal gestellt und von Uwe auch ein Lösung bekommen.
Leider a) verstehe ich diese nicht so ganz und b) soll sie verbessert werden. Habe daher noch einmal ein upload beigefügt in der Hoffnung auf Eure Hilfe. Ihr würdet mich bei der Lösung eines ohnehin schon Speicher fressenden Problems auf der Suche nach Speicherplatzersparnis einen Quantensprung nach vorne bringen.
https://www.herber.de/bbs/user/36390.xls
Vielen Dank im Voraus.
Stefan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ich verstehe deine Frage nicht
04.09.2006 13:27:15
klaus
x
AW: ich verstehe deine Frage nicht
04.09.2006 13:48:26
Stefan
Hallo Klaus,
dabei habe ich mir solche Mühe gegeben :-)
Ich möchte gemäß meiner Wunschliste aus einer beliebig langen Liste verschiedener Jahrgänge eines Kassenbuches drei aufeinanderfolgende Jahre auswählen und diese Werte (Zahlen sind später EURO-Beträge) in eine separate Ausgabetabelle zur dortigen formelmäßigen Weiterverarbeitung kopieren, übertragen, beamen, wie auch immer man das nennen mag. Die Formate der Ausgabetabelle sind dabei vorgegeben und sollen nicht geändert werden. Sinngemäß als in Ausgabe!A1 die Formel ="Eingabe!"A1. Allerdings Auswahl aus einer Liste von vielen Parametern, getriggert über das Jahr.
Ist es jetzt etwas klarer?
SVERWEIS ist mir zu umständlich. Jeder, den ich frage sagt mir, dass es per VBA geht, keiner weiß, wie.
Stefan
Anzeige
Hat keiner eine Idee?
05.09.2006 10:18:09
Stefan
Hallo,
habe leider noch keine Antwort erhalten. Will ich zu viel?
Benötige dringend einen Input.
Stefan
AW: Hat keiner eine Idee?
05.09.2006 11:18:45
Harald
Hallo Stefan,
so wie ich das verstehe, kommt dafür der Autofilter in Frage.
Per (Benutzerdefiniert...) kannst Du die Jahreszahlen auswählen ((größer oder gleich UND kleiner oder gleich)
mit folgenden Zeilen kannst Du dann die gefilterten Daten in die Zwischenablage kopieren.
Per Inhalte einfügen dann in deine Zieltabelle (wobei dir ggf der Makrorekorder helfen kann).
'letzte Zelle in Spalte A
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
'Bereich a2 bis d und letzte Zeile kopieren
Range("a2:d" & Lrow).Copy
Gruss Harald
Anzeige
Uwe, wo bist Du?
05.09.2006 12:22:55
Stefan
Hallo Harald,
nette Idee, leider etwas umständlich. Am liebsten möchte ich in Ausgabe!B2 ein Jahr eingeben, Enter, dann einen Button drücken und schwups sind die richtigen Zahlen wie von Geisterhand da.
Uwe, kannst Du Deinen alten Vorschlag nicht noch einmal überarbeiten, Du hattest das Problem immerhin voll erkannt. Wäre toll.
Stefan
AW: ich bekomms nicht hin
05.09.2006 17:23:22
ingUR
Hallo, Stefan,
aus Deiner neusten Arbeitsmappe ersehe ich, dass Du dasLayout verändert hast. Dies hat natürlich Einfluß auf die im Programm verwedneten Bezugsadressen. Jedoch die variable Zeilenzahl innerhalb der Jahresblöcke, war auch schon vorher berücksichtigt.
Hier der Programmcode mit Äderungen, die infolge der abgewandelten Eingabemaske entstehen und vielen Kommentarzeilen, die Dir vielleicht das Programmgeschehen an den einzelnen Stellen erklären können.
Sub EingabeBereichNachAusgabeBereichKopieren()
Dim wsI As Worksheet, wsA As Worksheet
Dim sJahr As Integer, eJahr As Integer
Dim r0 As Long, r1 As Long
'Hier wird den Objekten Tabellenblättern
'"Eingabe" und "Ausgabe" ein Referenznamne zugewiesen
'danach kann im Gültigkeitsbereich
'für Worksheets(""Eingabe") gleichbedeutend wsI
'als auch Worksheet("Ausgabe") gleichbedeutend wsA verwendet werden.
Set wsI = Worksheets("Eingabe")
Set wsA = Worksheets("Ausgabe")
'Hier wird aus der Zelle B1 der Tabelle "Ausgabe"
'das Startjahr der Variablien "sJahr" zugeweisen
sJahr = wsA.Range("B1")
'Hier wird untersucht, ob das gewählte Startjahr
'nicht vor 2002 liegt (sJahr < 2002)
'oder
'nicht in der Zukunft über dem heutigen Jahr liegt (sJahr>Year(Now))
'Year(Now) liefert die Jahreszahl im heutigen (now) Datum
'*** für Testzwecke kann es ja auch auf das letzte verfügbare Jahr
'in wsI gesetzt werde ****
If sJahr < 2002 Or sJahr > Year(Now) Then
MsgBox "Keine Jahresangabe für die Daten erfaßt sind"
Exit Sub
End If
With wsI
'Es wird die Zeilennummer (Row) in der Spalte wsI.A gesucht,
'in deren Zelle die Zahl steht, die mit der Eingabe sJahr übereinstimmt
r0 = .Columns(1).Find(sJahr, LookIn:=xlValues).Row
'Es wird die Zeilenummer (Row) in der Spalte wsI.A gesucht,
'in deren Zelle die Zahl steht, die um drei größer ist,
'als der Wert der sJahr-Variablen
r1 = .Columns(1).Find(sJahr + 3, LookIn:=xlValues).Row - 1
If r0 > r1 Then
'wurde die Zahl sJahr+3 nicht in Spalte A nicht gefunden,
'dann ist r0 > als r1!
'In diesem Fall ist dei letzte beschriebene Zelle in Spalte A zu suchen
'Durch die Änderung der Ausgangstabelle suchts Du nun jedoch
'in Spalte B (Ordnungsnummer 2 statt 1!)nach der letzten beschriebenen Zelle
r1 = .Cells(.Rows.Count, 2).End(xlUp).Row
Else
'Hier wird nun, nach Layoutänderung, die Zeile in Spalte B,
'siehe Bemerkung zuvor, in der "gesamt" steht, wobei von r1 (Zeile mit Jahreszahl sJahr+3)
'aufwärts fortgeschritten wird, bis der Suchbegriff gefunden ist.
While Not .Cells(r1, 2).Text = "gesamt"
r1 = r1 - 1
Wend
End If
'Hier wird der Bereich, bestehend aus den Zeilen r0 bis r1
'(egal wieviele Zeilen innerhalb eines Jahres beschreiben wurden,
'da ja nach der Zeile in Spalte A gesucht wurde, die dem Bereich des letzen,
'darzustellenden Jahres folgt (sJahr+3!) und von dort die Zeile nach oben ermittelt wurde
'mit dem letzten Eintrag "gesamt")
' und Spalten 1 bis 13 (:= "A" bis "M")
'Eingesetzt wird die Kopie mit Startadresse A8, die Du nun anpassen mußt.
.Range(.Cells(r0, 1), .Cells(r1, 13)).Copy Destination:=wsA.Range("A8")
End With
End Sub
Wenn Du die beiden Tabellen jedoch unterschiedlich formatiert haben möchtest, dann ergeben sich noch weitere Anweisungen, die Dir nicht helfen, dass Programm besser zu verstehen.
Daher empfehle ich, Ein- und Ausgabetabelle vorerst gleich zu formatieren und erst in späteren Arbeitsschritten, wenn die grundlegenden Programmzeilen von ihrer Bedeutung klar sind, dass Formtieren zu versuchen.
Zudem würde die Ausgabetabelle dann eh immer aufs neue zu Formatieren sein - wenn nicht bereits in der Eingabetabelle vorgegeben -, da ja nach Deiner Aufgabenstelleung nicht mit einer fest vorgegeben Zeilenjah je Jahr zu rechnen ist.
Gruß,
Uwe
Anzeige
AW: ich bekomms nicht hin
06.09.2006 08:24:53
Stefan
Uwe,
das war Gold. Ich danke Dir für die Kommentierung. Nun lichtet sich der Nebel. Sorry, dass ich am Layout nch etwas gebastelt habe. Ich konnte einfach nicht wiederstehen...
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige