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

in nächste leere Zeile einfügen

in nächste leere Zeile einfügen
02.11.2023 11:24:50
Fred
Hallo Excel Experten,
ich nutze ein Makro, welches jede 4 Zeile in dem Bereich J11:J100 durchläuft und entsprechenden Wert in Spalte 52 "AZ" einträgt.
Sub text1()

Dim bereich1 As Range
Dim bereich2 As Range
Dim x As Integer
Dim ZeilenNr As Integer
Set bereich1 = Range("J11:J100")
ZeilenNr = bereich1.Rows.Count
For x = 1 To ZeilenNr Step 4
bereich1.Cells(x, 1).Offset(0, 42) = bereich1.Cells(x, -8)
Next
End Sub

Kleines Problem: Die Eintragungen finden ebenfalls alle 4 Zeilen statt
bereich1.Cells(x, 1).Offset(0, 42)

Kann mir bitte ein Experte sagen, wie ich diese Eintragungen in Spalte 52, erste freie Zeile bekomme?!
ENDE_Sp52 = Sheets("Blatt1").Cells(Rows.count, 52).End(xlUp).Row + 1


Gruss
Fred

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in nächste leere Zeile einfügen
02.11.2023 13:08:06
Fred
so, nun habe ich selbst getüfftel :-)
geändert:
Sub text1()

Dim bereich1 As Range
Dim x As Integer
Dim ZeilenNr As Integer
Dim ws As Worksheet
Dim letzteZeile As Long

Set ws = ThisWorkbook.Worksheets("Blatt1")
Set bereich1 = ws.Range("J11:J100")
ZeilenNr = bereich1.Rows.Count
letzteZeile = ws.Cells(ws.Rows.Count, 52).End(xlUp).Row

For x = 1 To ZeilenNr Step 4
ws.Cells(letzteZeile + 1, 52).Value = bereich1.Cells(x, -8).Value
letzteZeile = letzteZeile + 1
Next
End Sub

läuft bestens!
Anzeige
AW: in nächste leere Zeile einfügen
02.11.2023 18:19:22
daniel
ja; aber du kannst das vereinfachen und Variablen sparen:
allerdings sollte jede Zelle, die du ausliest auch einen Wert haben.
wenn du im Quellbereich leerzellen hast, die im Ziel leer bleiben sollen, bleib bei deiner Variante, ebenso, wenn du die von dir verwendeten Variablen auch noch an anderer Stelle benötigst.

Sub text1()

Dim bereich1 As Range
Dim x As Integer
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Blatt1")
Set bereich1 = ws.Range("J11:J100")

For x = 1 To bereich1.Rows.Count Step 4
ws.Cells(ws.Rows.Count, 52).Offset(1, 0).value = bereich1.Cells(x, -8).Value
Next
End Sub


eine andere Methode ist diese, sie kommt ohne Schleife aus, das beschleunigt den Code und macht das Testen im Einzelstepmodus angenehmer:


 Set ws = ThisWorkbook.Worksheets("Blatt1")

Set bereich1 = ws.Range("J11:J100")
With Thisworkbook.Sheet("Blatt1").Cells(Rows.Count, 52).end(xlup).offset(1, 0)
With .Resize(bereich1.Rows.count / 4, 1)
.Formula = "=Index(" & bereich1.Address & ",(Row(a1) - 1)*4+" & bereich1.row & ")"
.Formula = .Value
end with
end with




Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige