Autofill Spalte A nur bei gefüllten Zellen Spalte B
#1
Hallo G'meinde

Kopiert werden Daten aus Tabellenblatt 01 in Tabellenblatt 02 Spalte B (Makrorecorder = MR).
Spalte A: Hier sollte als nächstes eine durchgängige Nummerierung erfolgen. Angefangen in Zelle A2

Code:
=WENNFEHLER(WENN(B2<>"";A1+1;"");"")
Händisch bei Doppelklick im rechten Eck, kein Problem ( da die Tiefe erkannt wird ), keine Leerzellen.
Zum weiteren muss erwähnt werden, ist die Spalte unterschiedlichst befüllt.

Nun zur Frage:
Wie erstellt man hierzu einen VBA-Code?
- der die Daten in Spalte B bis zur letzten vollen Zelle findet

Gedanke: Suche letzte befüllte Zelle der benachbarten Spalte "B" und fülle Spalte "A" von A2 bis A... aus.

vorab schon mal Danke
Frank
Top
#2
Hallo Frank, welcher Fehler kann denn bei deiner Formel auftreten, dass du WENNFEHLER() hier bemühst..?
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage
Top
#3
Hallo Frank,

ja, mich gibt es noch ... und darum muß ich Dich, wie schon früher, auffordern, Dein Anliegen für einen normaldenkenden Mitteleuropäer verständlich rüberzubringen.


Zitat:Kopiert werden Daten aus Tabellenblatt 01 in Tabellenblatt 02 Spalte B (Makrorecorder = MR).

was zum Beispiel will der Autor dieser Zeilen dem geneigten Leser damit vermitteln?
Vielleicht lädst Du auch "sicherheitshalber" eine Datei hoch. Wie das geht, weißt Du ja wohl noch  :05:
Top
#4
(23.07.2015, 17:35)Käpt schrieb: ja, mich gibt es noch ...
Hallöchen Käpt, schön dich zu lesen


Zitat:Jockel
WENNFEHLER() hier bemühst..
Die Formel ist in Dauergebrauch weil sich des öfteren in anderen Spalten mal eine Leerzelle verirrt.

Ich bearbeite per Excel meine Musikdatenbank
Da die Herkunft aus diversen Festplatten stammt, ist die Datenmenge in der Spaltentiefe unterschiedlich.
Mit dem Progi MP3TAG lese ich die Dateien, die dann mit einer *.csv-datei in Excel verarbeitet werden kann.
Manch Titel hat ein Minuszeichen voran oder #Wert oder #Name, wird somit als Fehler dargestellt.

Zur Frage da alle Albeneinträge untereinander zusammengelegt werden, wollte ich bevor Duplikate löschen und sortieren eine Durchnummerierung in Spalte B ab B2 platzieren.
Datenvolumen ca 600.000 Mp3-Dateien, meist doppelt wegen Datensicherung dann ca. 1.200.000 Mp3's

anbei ein abgespecktes Beispiel
.xlsm   abgespecktes Beispiel.xlsm (Größe: 19,78 KB / Downloads: 7)

hoffe es besser rüber gebracht zu haben.
abermals Danke
mfg Frank
Top
#5
H Frank,

(23.07.2015, 15:25)WergibtmirRat schrieb: Wie erstellt man hierzu einen VBA-Code?
- der die Daten in Spalte B bis zur letzten vollen Zelle findet

als Tipp, starte mal so:

Code:
loLetzte = Cells(Rows.Count, 2).End(xlUp).Row              ' letzte belegte in Spalte B (2)
For i = 2 To loLetzte
   Range("A" & i).FormulaLocal = ...
Top
#6
Hallo Frank,

ich bin ja völlig erschlagen. Wirst Du eigentlich pro "Select" bezahlt.
Dann wirst Du aber verdammt reich werden  :05:

Wenn nicht, dann solltest Du das ändern, weil der Code jedes Mal, wenn er auf ein "Select" oder ein "Activate" trifft, wieder ganz von vorne durchläuft.
Das kostet verdammt viel Zeit, kann ich Dir verraten
Top
#7
(23.07.2015, 21:52)Käpt schrieb: ... "Select" ...

Moin moin
ich wiederhole mich gerne.
Der Code ist mittels Macrorekorder erstellt, bis dahin läuft es doch recht zügig.
Wo es harpert ist die Geschichte mit der letzte befüllte Nachbarzelle finden und dann die gefundenen durchnummerieren.

Gruß Frank
Top
#8
Hallo!
Mal eine Variante, die ohne Kaffeepause auskommt.   Idea
Code:
Sub Kurz()
Tabelle14.Range("B:C").Copy Tabelle1.Range("C1")
With Tabelle1
  .Range("A2:A" & .Cells(.Rows.Count, 3).End(xlUp).Row).FormulaR1C1 = _
     "=IF(RC[2]<>"""",R[-1]C+1,"""")"
End With
End Sub

@Ralf: Wir reden ja über >500.000 Datensätze. Da verbietet sich in meinen Augen eine Schleife.
@Frank: Die max. Zeilenanzahl von Excel kennst Du? 1.200.000 Datensätze sind jedenfalls nicht darstellbar.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#9
(24.07.2015, 07:53)RPP63 schrieb: ... 1.200.000 Datensätze sind jedenfalls nicht darstellbar...

Hallo und danke für dein Code
Ja das sind viele Dateien.
Vorab kann anhand der MD5-Hash (Identnummer 32 Zeichen lang)
Code aus MP3TAG

Code:
$filename(C:\Alle_Exporte\_Platte_0.csv,utf-16)"Liste__"$char(9)"Dateiname m. Pfad"$char(9)"Datenträger"
$loop($regexp(%ALBUM%,'(\l)',$1k),1)"%_counter%"$char(9)"%_path%"$char(9)"%_volume%"
$loopend()
"Liste 08"$char(9)"MD5-Nr"$char(9)"MD5"$char(9)"total-MD5"
$loop($regexp(%MD5-Hash Audio_D%,'(\l)',$1k),1)"%_workingdir%"$char(9)"%_counter%"$char(9)"%MD5-Hash Audio_D%"$char(9)"%_total_files%"
$loopend()

per Zählenwenn in Excel ein Mehrfachvorkommen dargestellt werden.
Die Dateiadresse + fortlaufende Nummerierung zeigt dann somit an, auf welcher Partition sich die Datei befindet.

mfg Frank
Top
#10
Hallo!
Verrenne Dich nicht!  :20:
Zählenwenn() ist für diese Datenmengen definitiv NICHT geeignet!
(Zumal es ja für alle Werte durchgeführt werden muss und schon mal mind. 360 Milliarden Rechenschritte erfordert!!)

Sehr viel einfacher und vor Allem erheblich schneller ist es, die Spalte mit dem MD5-Hash per "Duplikate entfernen" vorab zu säubern!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste