Registriert seit: 19.01.2017
Version(en): Office für Mac V15.29.1
Hallo, ich bin neu hier im Forum und ein absoluter Excel-Anfänger und hoffe auf Hilfe!!!
Wir sind eine Druckerei und haben eine Datei bekommen mit 149 Registern, in denen unterschiedlich viele Zeilen pro Register sind.
Ich bräuchte jetzt in jedem Register eine Zeilenanzahl, die durch 12 teilbar ist. Das heisst, es müssten automatisch Zeilen mit Inhalt "X" hinzugefügt werden, bis sich ein vielfaches von 12 ergibt.
Ist das irgendwie umsetzbar!?
Vielen Dank für Antworten und eure Hilfe....
Marco
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Moin Marco!
So ganz verstanden habe ich das noch nicht.
Deshalb Nachfrage:
Eine Tabelle endet in Zeile 1234
Du möchtest jetzt die Tabelle über die gesamte Breite bis Zeile 1236 mit x auffüllen?
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)
Registriert seit: 19.01.2017
Version(en): Office für Mac V15.29.1
Hi Ralf,
ganz genau!!!
Allerdings braucht nicht die ganze Breite mit "X" aufgefüllt werden, es reicht die erste Spalte.
Muss auch nicht "X" sein, kann irgendwas sein.
Viel Grüße
Marco
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Kann es auch ein Makro sein?
Ansonsten wird es bei 149 Tabellen eine Tagesbeschäftigung.
Das Makro braucht ja nur einmal laufen und kann dann gelöscht werden.
(besser wäre es in der PERSONAL.xlsb aufgehoben, denn es werden ja häufiger Aufträge kommen)
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)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Weil mich die Sache interessiert hat …
Du solltest etwas von Ganzzahldivision (Operator \) und Modulo (Operator Mod) gehört haben, um das Makro zu verstehen:
Modul Modul1Option Explicit
Sub RPP()
Dim ws As Worksheet, Letzte&, Allerletzte&
For Each ws In ActiveWorkbook.Worksheets
With ws
Letzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If Letzte Mod 12 > 0 Then
Allerletzte = (Letzte \ 12 + 1) * 12
.Range(.Cells(Letzte + 1, 1), .Cells(Allerletzte, 1)) = "#"
End If
End With
Next
End Sub
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)
Registriert seit: 19.01.2017
Version(en): Office für Mac V15.29.1
Hi Ralf,
klar kann es auch ein Makro sein.
Das funktioniert schon fast perfekt!!!!!
Kann man da noch was einbauen, damit zuerst auf jedem Register die erste Zeile gelöscht wird!? Da stehen nämlich die Spaltennamen drin, die müssten raus.
Ansonsten ist es perfekt!!!!!
Gruß
Marco
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Ist nur eine Zeile Code mehr (achte auf den grünen Kommentar)
Gern geschehen ;)
Modul Modul1Option Explicit
Sub RPP()
Dim ws As Worksheet, Letzte&, Allerletzte&
For Each ws In ActiveWorkbook.Worksheets
With ws
.Cells(1).EntireRow.Delete 'jeweils erste Zeile löschen
Letzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If Letzte Mod 12 > 0 Then
Allerletzte = (Letzte \ 12 + 1) * 12
.Range(.Cells(Letzte + 1, 1), .Cells(Allerletzte, 1)) = "#"
End If
End With
Next
End Sub
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)
Registriert seit: 19.01.2017
Version(en): Office für Mac V15.29.1
Hi Ralf,
super, das ist jetzt genau so, wie ich es brauche!!!!
Vielen, vielen Dank dafür!!!
Gruß, Marco
Registriert seit: 19.01.2017
Version(en): Office für Mac V15.29.1
Hallo Ralf,
ich hätte noch eine klitzekleine Bitte!!
Könntest du das Script noch so abändern, dass anstelle des "X" der Arbeitsblatt-Name in der Zeile steht!?!
Das wäre wunderbar!!!!
Vielen Dank schon mal.....
Marco
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
24.01.2017, 09:40
(Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2017, 09:40 von RPP63.)
Moin!
- Bei mir stand kein X, sondern # ;)
- Im gesamten Bereich, also max. 11mal? dann statt = "#" = .Name
- Nur in der allerletzten Zeile? Dann statt
.Range(.Cells(Letzte + 1, 1), .Cells(Allerletzte, 1)) = "#" .Cells(Allerletzte, 1) = .Name
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)