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

Autofüllen automatisieren

Autofüllen automatisieren
05.08.2008 18:45:30
Christian
Hallo liebe Forum Mitglieder,
ich habe eine Excel Datei die wie folgt aufgebaut ist
A
1 123
2
3
4
5 678
6
7
8 247
9
10 369
11
12
13
Nun möchte ich, dass die Felder zwischen 2 Zahlen mit der ersten Zahl automatisch gefüllt wird, so dass nachher das Ergebnis wie folgt aussieht.
A
1 123
2 123
3 123
4 123
5 678
6 678
7 678
8 247
9 247
10 369
11 369
12 369
13 369
Normalerweise macht Autofüllen das ja soweit ganz gut. Also auf die Zahl raufklicken dann doppelklick und schon werden die Zellen bis zur nächsten Zahl gefüllt. Das möchte ich gerne automatisieren. Ich habe schon versucht ein Makro aufzunehmen, leider ohne Erfolg?
Nun hatte ich die Idee, dass mit VBA zu lösen, in dem ich eine Schleife schreibe. Meine Idee wäre wie folgt:
Eine Schleife, die das Feld abfragt und mit dem nächsten vergleicht. Wenn das Feld leer ist, soll der Wert des vorigen Feldes reingeschrieben werden. Wenn das Feld nicht leer ist soll der neue Wert der Zelle gespeichert werden und die Schleife neu durchlaufen werden.
Ich weiß leider nicht ganz genau, wie ich das realisieren kann.
Wie kann ich einen Schleifendurchlauf von A1 - A52000 realisieren?
Vielen Dank im Voraus für die Hilfe
Martin

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

Betreff
Datum
Anwender
Anzeige
AW: Autofüllen automatisieren
05.08.2008 19:17:00
Roland
Hallo Christian,
als Ansatz:
Sub Auffuellen() Dim lngEnde As Long, lngCounter As Long, Zahl As Long lngEnde = Cells(1, 1).CurrentRegion.Rows.Count For lngCounter = 1 To lngEnde If Cells(lngCounter, 2) "" Then Zahl = Cells(lngCounter, 2).Value Cells(lngCounter, 2) = Zahl Next End Sub


Passt das?
Gruß aus Berlin
Roland Hochhäuser

AW: Autofüllen automatisieren
05.08.2008 19:42:00
Ramses
Hallo
Nimm anstelle von
lngEnde = Cells(1, 1).CurrentRegion.Rows.Count
lieber
lngEnde = activesheet.usedrange.rows.count
Auch wenn ich kein Freund von "UsedRange" bin.
Wenn keine zusammenhängenden Daten in der Nachbarspalte vorhanden sind, erhältst du ein falsches Ergebnis
lngEnde = Cells(1, 1).CurrentRegion.Rows.Count
bei dieser Konstellation ergibt 1
Tabelle1

 AB
11 
2  
3  
4  
51 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
lngEnde = Cells(1, 1).CurrentRegion.Rows.Count
bei dieser Konstellation ergibt 2
Tabelle1

 AB
11 
2 2
3  
4  
51 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruss Rainer

Anzeige
AW: Autofüllen automatisieren
05.08.2008 19:44:00
Gerd
Hi,
lngEnde = activesheet.usedrange.rows.count
Liefert auch ein falsches Ergebnis, wenn Usedrange nicht in Zeile 1 beginnt.
mfg Gerd

AW: Autofüllen automatisieren
05.08.2008 19:47:56
Ramses
Hallo
Das weiss ich weil Cells(1,1) ja als Referenz angegeben ist.
Aber in der Frage wurde ja geschrieben, dass die Werte in Zeile 1 beginnen.
Aber eine andere SICHERE Variante sehe ich auch nicht, da nicht geschrieben wurde ob in der Nachbarspalte auch noch Zahlen stehen.
Ansonsten wäre
lngEnde = Cells(rows.count, 1).end(xlup).Row
die Anweisung der Wahl
Gruss Rainer

AW: Autofüllen automatisieren
05.08.2008 20:10:14
Roland
Tja,
alles ein wenig unsicher . . . aber wir reden dann nicht über Code, sondern über die (m.E. einigermassen klare) Aufgabenstellung gem. Ausgangspost.
Danach beginnt die Tabelle in A1 und müsste (jedenfalls nach dem Beispiel) durchgehend sein . . immerhin wird auch ein Schleifendurchlauf von A1 - A52000 gefordert. Dann aber liefern lngEnde = Cells(rows.count, 1).end(xlup).Row und lngEnde = Cells(1, 1).CurrentRegion.Rows.Count identische Ergebnisse. Mein Ansatz scheitert (gewollt) dann, wenns nicht durchgehend sein sollte. Ramses Ansatz (lngEnde = Cells(rows.count, 1).end(xlup).Row) nimmt möglicherweise "zuviel" mit, wenn sich unterhalb der aufzufüllenden Tabellenregion noch was befinden sollte, was unangetastet bleiben soll. Warten wir mal, was der Fragesteller dazu meint.
Gruß
Roland Hochhäuser

Anzeige
AW: Autofüllen automatisieren
05.08.2008 20:15:02
Ramses
Hallo
"...und lngEnde = Cells(1, 1).CurrentRegion.Rows.Count identische Ergebnisse...."
Ich weiss ja nicht welche EXCEL version du hast, aber bei mir jedenfalls nicht wie ich in den Beispielen klar zeigen konnte.
"...wenn sich unterhalb der aufzufüllenden Tabellenregion noch was befinden sollte..."
Genau darum geht es ja.
Das Ende bzw. wie weit ist überhaupt nicht definiert.
WAS ist denn dann die letzte Zahl ?
Die Zahl in Zelle 1034 oder die Zahl in 1041.
Soll die noch mitgenommen werden oder nicht ?
Die Frage kann als solches jedenfalls nicht abschliessend beantwortet werden
Gruss Rainer

Anzeige
AW: Autofüllen automatisieren
05.08.2008 20:30:00
Roland
? Wenn A1 bis A? durchgängig ausgefüllt sind, liefern meine (und ich nehme an auch deine) Excelversionen identische Ergebnisse. Wenn A1 bis A? _NICHT_ durchgängig ausgefüllt sein sollten, kommt es zu Unterschieden.
Ich bin anhand der konkreten Aufgabenstellung von der ersten Annahme ausgegangen und habe aufzuzeigen versucht, dass deine Alternative für diese konkrete Aufgabenstellung möglicherweise auch richtig sein kann, aber genauso gut auch ins Auge gehen kann. Dazu müsste sich der Fragesteller noch einmal äußern. Im Ergebnis liegen wir da nicht auseinander.
Gruß
Roland Hochhäuser

Anzeige
AW: Autofüllen automatisieren
05.08.2008 20:48:07
Ramses
Hallo
Ich glaube da ist ein Missverständnis:
WENN die Zeilen durchgängig sind, dann hast du recht, dann führen beide Versionen zum gleichen Ergebnis.
Die Aufgabe lautete aber doch:
"...dass die Felder zwischen 2 Zahlen mit der ersten Zahl automatisch gefüllt wird.."
LÜCKEN mit Zahlen auffüllen,... und gibt es eben unterschiedliche Ergebnisse dahingehend, dass deine Formel bei der ersten leeren Zelle, sofern in der Nachbarspalte keine anderen direkt angrenzenden Werte eingetragen sind, eben aufhört.
Weil sie aufhört,... kannst du damit eben KEINE Lücken auffüllen :-)
Gruss Rainer

Anzeige
Da war ich noch nicht fertig mit schreiben...?
05.08.2008 20:54:54
Ramses
Sorry,..
Der Beitrag sollte noch gar nicht online gehen.
Gruss Rainer

AW: Autofüllen automatisieren
05.08.2008 20:53:44
Ramses
Hallo
Ich glaube da ist ein Missverständnis:
WENN die Zeilen durchgängig sind, dann hast du recht, dann führen beide Versionen zum gleichen Ergebnis.
Die Aufgabe lautete aber doch:
"...dass die Felder zwischen 2 Zahlen mit der ersten Zahl automatisch gefüllt wird.."
LÜCKEN mit Zahlen auffüllen,... und gibt es eben unterschiedliche Ergebnisse dahingehend, dass deine Formel bei der ersten leeren Zelle, sofern in der Nachbarspalte keine anderen direkt angrenzenden Werte eingetragen sind, eben aufhört.
Bau mal eine Tabelle so auf
Tabelle1

 AB
11 
2  
3  
4  
52 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
und gib im Direktfenster
debug.print Cells(1, 1).CurrentRegion.Rows.Count
ein. Als Ergebnis erhältst du "1".
Die Aufgabenstellung ist die Zellen A2 bis A4 mit der Zahl "1" zu füllen.
Deine Schleife
For lngCounter = 1 To lngEnde
If Cells(lngCounter, 2) "" Then Zahl = Cells(lngCounter, 2).Value
Cells(lngCounter, 2) = Zahl
Next
läuft somit von "1" to lngCounter = 1
Weil sie bei 1 aufhört,... kannst du damit eben KEINE Lücken auffüllen :-)
Sollte ich Unrecht haben, entschuldige ich mich im voraus, stelle mich in die Ecke und trink ein Bier auf Dich.
Gruss Rainer

Anzeige
AW: Autofüllen automatisieren
06.08.2008 08:44:13
Christian
Hallo Roland, Rames und Gerd,
erst einmal vielen Dank für die vielen Antworten und die Gedanken, die ihr euch gemacht habt. Ich habe mich sehr gefreut.
Also um noch die restlichen Unklarheiten zu beseitigen. Also noch einmal genau
A B C
01 Überschrift1 Überschrift2 Überschrift3
02 123 12312 1241
03 (leere Zelle) 12321 3243
04 (leere Zelle) 43656 4342
05 678 32552 6575
06 (leere Zelle) 56476 3243
07 (leere Zelle) 89078 3253
08 247 89073 2342
09 (leere Zelle) 09879 3242
10 369 32432 5657
11 (leere Zelle) 98723 3242
12 (leere Zelle) 32343 3243
13 (leere Zelle) 21345 2345
soll zu
A B C
01 Überschrift1 Überschrift2 Überschrift3
02 123 12312 1241
03 123 12321 3243
04 123 43656 4342
05 678 32552 6575
06 678 56476 3243
07 678 89078 3253
08 247 89073 2342
09 247 09879 3242
10 369 32432 5657
11 369 98723 3242
12 369 32343 3243
13 369 21345 2345
werden.
Bis zu welcher Zeile es geht ist unterschiedlich. Mal Zelle 25.000 oder 43.000. Das würde ich dann manuell ändern.
Vielen Dank für Eure Hilfe. Ich werde jetzt einmal einige Ansätze testen und dann mitteilen, was funktioniert hat.

Anzeige
AW: Autofüllen automatisieren
06.08.2008 09:10:01
Roland
Hallo Christian,
es kommt darauf an, ob 01,02,03 usw. bei dir in Spalte A stehen (dann mein Ansatz) oder "nur" die Zeilennummern des Tabellenblattes sind. So wie Du jetzt die Tabelle aufbaust nehm ich eher letzteres an, dann nimm Ramses Ansatz, den er Dir sicher gerne z.B. um die Inputbox aufbohren wird, die die letzte Zeilennummer, bis zu der aufgefüllt werden soll, entgegen nimmt.
Gruß
Roland Hochhäuser

AW: Autofüllen automatisieren
06.08.2008 11:13:07
christian
Also ich habe es jetzt getestet und es hat alles super geklappt. Ich danke euch recht herzlich für die Hilfe.

Private Sub CommandButton1_Click()
Dim lngEnde As Long, lngCounter As Long, Zahl As Long
'lngEnde = Cells(1, 1).CurrentRegion.Rows.Count
lngEnde = ActiveSheet.UsedRange.Rows.Count
For lngCounter = 2 To lngEnde
If Cells(lngCounter, 1)  "" Then Zahl = Cells(lngCounter, 1).Value
Cells(lngCounter, 1) = Zahl
Next
End Sub


Damit hats geklappt und er hört auch automatisch bei der letzten Zahl auf.

Anzeige
Danke für die Rückmeldung o.w.T.
06.08.2008 11:51:02
Roland

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige