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

numierierung

numierierung
29.05.2016 19:24:10
Thomas
Hallo Excelfreunde,
ich bin auf der suche nach einem macro das mir in tabelle2 spalte 11 eine fortlaufende Nummerierung schreibt.Der Bereich ist von zeile 2 bis maximal zur zeile 5000. Jedoch nur dann wenn in spalte 1 ein wert drin steht. mit der Formel bekomme ich es so hin:
=WENN(A2="";"";KGRÖSSTE(K$1:K1;1)+1)
diese formel trage ich in zelle K2 und ein ziehe sie runter dann funktioniert es.
Da in dieser Tabelle ständig zeilen gelöscht und zugefügt werden ( mit vba )
muss ich diese formel immer wieder erneuern. deshalb dachte ich das ich sie gleich mit vba reinschreibe. nun ja leider finde ich nicht passendes dazu im netz. Was auch schnell genug ist.
Der macro start erfolgt dann vom Tabellenblatt 1.
kann mir jemand dabei helfen?
https://www.herber.de/bbs/user/105853.xlsm
liebe grüsse thomas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: numierierung
29.05.2016 19:35:17
Michael
Hi Thomas,
am besten mit einem Array:
Option Explicit
Sub NummernSchreiben()
Dim a&()
Dim maxZ&, i&
maxZ = Range("A" & Rows.Count).End(xlUp).Row
ReDim a(1 To maxZ, 1 To 1)
For i = 1 To maxZ: a(i, 1) = i: Next
Range("K1").Resize(maxZ) = a
End Sub
Schöne Grüße,
Michael

Nachtrag
29.05.2016 19:38:59
Michael
Bei ca. 5800 Zeilen passiert das im 2-stelligen Millisekundenbereich:
Sub NummernSchreibenT()
Dim a&()
Dim maxZ&, i&
Dim t As Single
t = Timer
maxZ = Range("A" & Rows.Count).End(xlUp).Row
ReDim a(1 To maxZ, 1 To 1)
For i = 1 To maxZ: a(i, 1) = i: Next
Range("K1").Resize(maxZ) = a
MsgBox (Timer - t) * 1000 & " ms"
End Sub

Anzeige
das passt super besten dank an Michael
29.05.2016 20:00:21
Thomas
Hallo Michael,
man so schnell konnte ich es nicht mal schreiben wie du geantwortet hast.
Es passt super und ist sau schnell.
Hab recht vielen vielen dank für diese super schnelle Lösung.
liebe grüsse thomas

gerne, und schau mal bitte
30.05.2016 15:43:42
Michael
Hi Thomas,
der Vollständigkeit halber habe ich noch das getestet,
Sub NummernSchreibenAlt()
Dim a&()
Dim maxZ&, i&
Dim t As Single
t = Timer
maxZ = Range("A" & Rows.Count).End(xlUp).Row
Range("K1").Resize(maxZ).Formula = "=row()"
Range("K1").Resize(maxZ).Value = Range("K1").Resize(maxZ).Value
MsgBox (Timer - t) * 1000 & " ms"
End Sub

es braucht aber ca. doppelt so lang: Arrays sind halt manchmal einfach das Mittel der Wahl.
Vielen Dank für die Rückmeldung & happy exceling,
LG,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige