Mehrspaltige Blätter sortieren
#1
Sad 
Der Titel ist etwas unglücklich formuliert. Aber ich weiß nicht, wie ich es anderes beschreiben soll.
Hier auf der Plattform scheint ne Menge verändert worden zu sein.
Eigentlich wollte ich hier ein paar ausgelesene Zeilen (Von Beverly's Excel Inn Version 5.30) mal darstellen, aber die Vorschau stellt das so riesig dar.

Ich versuche es mal mit Worten zu erklären.

Ich habe ca. 10000 Zeilen mit 2 Spalten. Links die Artikelnummer und rechts der Preis.
Jetzt habe ich mal die Seitengröße festgelegt auf 50 Zeilen.

Anschließend habe ich die Zeilen 51 bis 100 ausgeschnitten und oben in Spalte C und D eingefügt.
Danach die Zeilen 101 bis 150 ausgeschnitten und oben in Spalte E und F eingefügt.
Danach die Zeilen 151 bis 200 ausgeschnitten und oben in Spalte G und H eingefügt.
Danach die Zeilen 201 bis 250 ausgeschnitten und oben in Spalte I und J eingefügt.
So, damit ist eine Seite DIN A4 komplett.

Exakt so weiter habe ich die nächsten Seiten fertiggestellt.
War ein wenig zeitlicher Aufwand, aber ist ja einmalig......so hoffe ich es.....

Denn nun kommt meine Frage.

Annahme, ich muss ein paar Artikelnummern mit Preis einfügen, oder gar löschen. Und diese Artikelnummern sind irgendwo mitten drin.
Jetzt ist meine ganze Arbeit diese vielen Spalten zu kreieren wieder hinfällig.

Wenn ich jetzt irgendwo mittendrin eine Zelle einfüge für Artikelnummer und eine Zelle daneben einfüge für den Preis,
dann würden alle zuvor von mir manuell gesetzten Spalten nicht mehr stimmen. Dann wäre alles umsonst gewesen.

Aber vielleicht gibt es dafür schon lange eine Lösung?
Vermutlich eine vorhanden VBA Routine?

Ich hoffe, ich habe es verständlich rübergebracht.
Vielen Dank für Infos und Hilfen dazu.
Top
#2
Hallo,

mit diesem Makro könntest Du Deine gesamte Liste ausdrucken, ohne Sie vorher verteilen zu müssen:

Code:
Option Explicit

Sub drucken()
Dim loA As Long
Dim loB As Long
Dim loC As Long
For loA = 0 To 7
loB = Int((loA Mod 4) / 4)
loC = (loA Mod 4) * 2
Range(Cells(loA * 50 + 1, 1), Cells(loA * 50 + 50, 2)).Copy Destination:=Cells(1 + loB * 200, 17 + loC)
If loA Mod 4 = 3 Then
  Range(Cells(1 + loB * 200, 17), Cells(50 + loB * 200, 24)).Select
  Selection.PrintOut
  Range("O:Z").Clear
End If
Next

End Sub
Das Einzige, was Du machen mußt, ist den Bereich Q bis X auf eine Seite einrichten und die Zeilenhöhe anzupassen. Evtl noch Kopfzeilen einarbeiten.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#3
(02.03.2015, 11:56)BoskoBiati schrieb: Hallo,

mit diesem Makro könntest Du Deine gesamte Liste ausdrucken, ohne Sie vorher verteilen zu müssen:



Code:
Option Explicit

Sub drucken()
Dim loA As Long
Dim loB As Long
Dim loC As Long
For loA = 0 To 7
loB = Int((loA Mod 4) / 4)
loC = (loA Mod 4) * 2
Range(Cells(loA * 50 + 1, 1), Cells(loA * 50 + 50, 2)).Copy Destination:=Cells(1 + loB * 200, 17 + loC)
If loA Mod 4 = 3 Then
  Range(Cells(1 + loB * 200, 17), Cells(50 + loB * 200, 24)).Select
  Selection.PrintOut
  Range("O:Z").Clear
End If
Next

End Sub
Das Einzige, was Du machen mußt, ist den Bereich Q bis X auf eine Seite einrichten und die Zeilenhöhe anzupassen. Evtl noch Kopfzeilen einarbeiten.
Hallo Edgar,


ich danke dir für die Antwort.
Ich habe zwar ein wenig VBA Kenntnisse, aber mit Sicherheit nicht ausreichend, um das alles zu verstehen.

Wenn ich die Seite formatiere und alle Ränder auf 0 stelle,
die Spaltenbreite auf 9 gebe,
dann schaffe ich 10 Spalten pro Blatt hinzubekommen.

Diese Formatierungs-Vorgaben ins VBA vorher einzubauen, sollte ich hinbekommen.
Aber ich kann die ganzen Variablen nicht einordnen.

Außerdem ist ein sofortiger Ausdruck nicht gut.
Besser wäre, wenn ich eine Seitenansicht hätte und dann drucke.

Kannst du mir mal die einzelnen Variablen und Fixwerte näher erklären?
Dann kann ich die entsprechend meinem Ausdruck anpassen.
Top
#4
Hallo Achim,

hier ohne VBA per Formelbezüge auf die Liste.

Gruß Uwe


Angehängte Dateien
.xlsx   Mehrspaltige Blätter sortieren.xlsx (Größe: 38,48 KB / Downloads: 5)
Top
#5
Hallo Uwe,

da Du einen einspaltigen Index verwendest, kannst Du das ;1 am Ende weglassen. So ginge es auch mit einer einzigen Formel:


Code:
=INDEX(Liste!$A:$B;ZEILE($A2)+KÜRZEN((SPALTE(A1)-1)/2;)*50;REST(SPALTE()-1;2)+1)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#6
(02.03.2015, 13:36)BoskoBiati schrieb: Hallo Uwe,

da Du einen einspaltigen Index verwendest, kannst Du das ;1 am Ende weglassen. So ginge es auch mit einer einzigen Formel:




Code:
=INDEX(Liste!$A:$B;ZEILE($A2)+KÜRZEN((SPALTE(A1)-1)/2;)*50;REST(SPALTE()-1;2)+1)

Hallo Leute,

ich habe die Tabelle von Uwe mal mit den Formeln erweitert um alle 10000 Zeilen zu erfassen.
Jetzt dachte ich, dass in der Formel die Zahl 50 für die Anzahl der Zeilen steht,
die ich pro Seite vorgegeben hatte. Dem ist scheinbar nicht so.

Ich habe die DIN A4 Seite mal formatiert.
Je weniger Seiten gedruckt werden, desto besser.

Aber als ich aus der 50 in der Formel mal eine 65 machte, passte da nichts mehr.
Denn mein Ziel wäre natürlich im Blatt 3 oben in Zelle A1 einen Wert einzugeben,
der dann in meiner Formel die Anzahl der Zeilen vorgibt.

Ach ja, die Überschriften sind auch ohne Bedeutung.
Lösche ich die erste Zeile, ist die Formel nicht mehr gültig.
Top
#7
Hallo Achim,

die 50 ist schon die Zeilenanzahl, die man auch in einer Zelle vorgeben kann.

Gruß Uwe


Angehängte Dateien
.xlsx   Mehrspaltige Blätter sortieren.xlsx (Größe: 43,16 KB / Downloads: 1)
Top
#8
Hallo Achim,

jetzt bist Du schon Jahre mit Excel und im Forum aktiv, so langsam solltest Du die Formelauswertung kennen, um mal nachzuvollziehen, was die Formeln machen!
Du darfst nicht die Überschrift löschen, sondern mußt die Formeln aus Zeile 2 ausschneiden und in Zeile 1 einfügen.

Hier mal meine Formel angepasst:


Code:
=WENN(ZEILE()>Tabelle3!$A$1;"";INDEX(Liste!$A:$B;ZEILE($A2)+KÜRZEN((SPALTE(A1)-1)/2;)*Tabelle3!$A$1;REST(SPALTE()-1;2)+1))
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#9
(02.03.2015, 14:58)BoskoBiati schrieb: Hallo Achim,

jetzt bist Du schon Jahre mit Excel und im Forum aktiv, so langsam solltest Du die Formelauswertung kennen, um mal nachzuvollziehen, was die Formeln machen!
Du darfst nicht die Überschrift löschen, sondern mußt die Formeln aus Zeile 2 ausschneiden und in Zeile 1 einfügen.

Hier mal meine Formel angepasst:



Code:
=WENN(ZEILE()>Tabelle3!$A$1;"";INDEX(Liste!$A:$B;ZEILE($A2)+KÜRZEN((SPALTE(A1)-1)/2;)*Tabelle3!$A$1;REST(SPALTE()-1;2)+1))

Habe die Formel bereits angepasst, so dass die erste Zeile wegfallen kann.
Aber es gibt immer noch Fehler.

Ich kopiere gerade die Formeln immer weiter. Bin gerade bei Spalte DM.
Jetzt plötzlich gibt es doppelte Werte......
Top
#10
/edit/: Tabelle wegen Darstellungsfehler entfernt./

(02.03.2015, 14:58)BoskoBiati schrieb: Hallo Achim,

jetzt bist Du schon Jahre mit Excel und im Forum aktiv, so langsam solltest Du die Formelauswertung kennen, um mal nachzuvollziehen, was die Formeln machen!
Du darfst nicht die Überschrift löschen, sondern mußt die Formeln aus Zeile 2 ausschneiden und in Zeile 1 einfügen.

Hier mal meine Formel angepasst:




Code:
=WENN(ZEILE()>Tabelle3!$A$1;"";INDEX(Liste!$A:$B;ZEILE($A2)+KÜRZEN((SPALTE(A1)-1)/2;)*Tabelle3!$A$1;REST(SPALTE()-1;2)+1))

Hier mal das Ausgelesene Teil als Beispiel für die plötzlich doppelten Werte.
Top


Gehe zu:


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