Clever-Excel-Forum

Normale Version: Zeilen in Arbeitsblatt autom. auffüllen, damit eine durch 12 teilbare Anzahl entsteht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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
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
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)
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 Modul1
Option 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
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
Ist nur eine Zeile Code mehr (achte auf den grünen Kommentar)
Gern geschehen ;)

Modul Modul1
Option 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
Hi Ralf,

super, das ist jetzt genau so, wie ich es brauche!!!!

Vielen, vielen Dank dafür!!!


Gruß, Marco
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
Moin!
  1. Bei mir stand kein X, sondern # ;)
  2. Im gesamten Bereich, also max. 11mal? dann statt = "#" = .Name
  3. Nur in der allerletzten Zeile? Dann statt
    .Range(.Cells(Letzte + 1, 1), .Cells(Allerletzte, 1)) = "#" .Cells(Allerletzte, 1) = .Name

Gruß Ralf
Seiten: 1 2