Clever-Excel-Forum

Normale Version: Liste automatisch auf Seiten aufteilen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute!

Ich hab zwar schon das ein oder andere hier aus dem Forum übernehmen können, bzw haben mir hier einige Anregungen bei den Problemen geholfen, aber jetzt ist der Ofen aus und ich stehe dumm da. :/
Deswegen musste ich mich jetzt doch nachträglich anmelden :)

Das ganze ist irgendwie sehr kompliziert, und ich weiß nicht wo ich anfangen soll.

Grundidee:
In der angehängten Datei befindet sich das Problem.
Im Sheet "Kabelliste" will ich manuell die Spalten A und B ausfüllen, das klappt schonmal :D
Die Spalten D bis I sollen automatisch ausgefüllt werden, je nach Aderzahl mal so mal so. Das klappt auch erstmal.
Im Sheet Ergebnis_1 soll nun die Druckvorlage automatisch ausgefüllt werden, aber fortlaufend, weshalb ich keine festen Bezüge nehmen kann. Ich vermute das ich ohne VBA gar nicht dahinkomme :22:
Die restlichen 3 Sheets sind eine manuell geschrieben Liste wie es am Ende aussehen sollte.
Ich hatte erst an etwas wie "WENN die Zelle H1 keinen Text enthält, dann mach bei I1 weiter, wenn auch I1 kein Text enthält, dann springe zu D2" aber das will alles nicht so wie ich das will.

Wenn ich schon auf VBA setzten muss, dann würde ich die Druckvorlage als Sheet hinterlegen und über einen Button dann die zu druckenden Seiten als neue Sheets erzeugen lassen wollen.

Ich hoffe ihr versteht das Problem bzw vorallem was ich so vor habe und könnt mir helfen.
Wenn alle Stricke reißen, dann gehts halt wieder manuell weiter

Vielen Dank

Gruß
WeisserWolf

[attachment=3773]
Hallo Weisser Wolf,


Zitat:Deswegen musste ich mich jetzt doch nachträglich anmelden [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

ich hoffe doch sehr, dass dies nicht allzu großes Unbehagen hervorgerufen hat. :05: :25:

Doch nun ernsthaft.

Zitat:Die Spalten D bis I sollen automatisch ausgefüllt werden, je nach Aderzahl mal so mal so. Das klappt auch erstmal.

Hier habe ich dir mal die Formeln verändert, damit tatsächlich nur ein Eintrag nach Anzahl der Adern erfolgt:

Kabelliste

ABCDEFGHI
1KabelnummerAderzahl
2i.111.1014i.111.101/1i.111.101/2i.111.101/3i.111.101/4
3i.111.1025i.111.102/1i.111.102/2i.111.102/3i.111.102/4i.111.102/5
4i.117.1013i.117.101/1i.117.101/2i.117.101/3
5i.117.1022i.117.102/1i.117.102/2
Formeln der Tabelle
ZelleFormel
D2=$A2&"/"&B2+SPALTE(A1)-B2
E2=WENN(D2="";"";WENN(RECHTS(D2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(B1)-$B2))
F2=WENN(E2="";"";WENN(RECHTS(E2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(C1)-$B2))
G2=WENN(F2="";"";WENN(RECHTS(F2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(D1)-$B2))
H2=WENN(G2="";"";WENN(RECHTS(G2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(E1)-$B2))
I2=WENN(H2="";"";WENN(RECHTS(H2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(F1)-$B2))

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Ab deinen nächsten Fragen tüftle ich mal. Sollte es aber auf VBA hinauslaufen, werde ich dir nicht helfen können.
Hi,

in meinem vorigen Vorschlag habe ich nicht berücksichtigt, dass in deiner Beispieldatei noch zwei Einträge folgen. So müsste der Automatismus (nach Einbau einer Hilfsspalte C, die du einfach ausblenden kannst) klappen:

Kabelliste

ABCDEFGHIJ
2i.111.1014i.111.101/4i.111.101/1i.111.101/2i.111.101/3i.111.101/4i.111.101i.111.101
3i.111.1022i.111.102/2i.111.102/1i.111.102/2i.111.102i.111.102
4i.117.1012i.117.101/2i.117.101/1i.117.101/2i.117.101i.117.101
5i.117.1024i.117.102/4i.117.102/1i.117.102/2i.117.102/3i.117.102/4i.117.102i.117.102
Formeln der Tabelle
ZelleFormel
C2=$A2&"/"&B2
D2=$A2&"/"&B2+SPALTE(A1)-B2
E2=WENNFEHLER(WENN(D2=C2;"";WENN(ODER(D2=$A2;D2=$C2);$A2;WENN(RECHTS(D2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(B1)-$B2)));"")
F2=WENNFEHLER(WENN(E2=D2;"";WENN(ODER(E2=$A2;E2=$C2);$A2;WENN(RECHTS(E2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(C1)-$B2)));"")
G2=WENNFEHLER(WENN(F2=E2;"";WENN(ODER(F2=$A2;F2=$C2);$A2;WENN(RECHTS(F2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(D1)-$B2)));"")
H2=WENNFEHLER(WENN(G2=F2;"";WENN(ODER(G2=$A2;G2=$C2);$A2;WENN(RECHTS(G2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(E1)-$B2)));"")
I2=WENNFEHLER(WENN(H2=G2;"";WENN(ODER(H2=$A2;H2=$C2);$A2;WENN(RECHTS(H2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(F1)-$B2)));"")
J2=WENNFEHLER(WENN(I2=H2;"";WENN(ODER(I2=$A2;I2=$C2);$A2;WENN(RECHTS(I2;1)*1>=$B2;"";$A2&"/"&$B2+SPALTE(G1)-$B2)));"")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Erkläre mir doch bitte noch die Logik, nach deren die Einträge in die Tabellen Seite 1, Seite 2 usw. erfolgen. Hier komme ich nicht dahinter.
Hallo Günter,

bevor du weitermachst:

Erstmal vielen Dank für deine Unterstützung!
Der rechte Teil der Tabelle enthielt einen kleinen Fehler in den Spalten H & I. Dort sollte eigentlich wirklich nur die Kabelnummer aus Spalte A stehen. Da kamen zwei Fehler auf einmal.
Dedankenfehler.

Ich wollte den rechten Teil so fertig machen, das dort alles generiert wird, aber das war nich konsequent zu ende gemacht.

Später im Ausdruck brauche ich die Spalten D-G und A jeweils 2x. Deswegen könnten H&I eigentlich entfallen.

Die kabel haben nur entweder 2 oder 4 Adern. Nicht mehr und nicht weniger.
Ich mach das gleich nochmal neu und werd in der excel-Datei etwas kommentieren, dann wird es hoffentlich übersichtlicher, was ich vorhabe. Sorry dafür!

EDIT:

So schnell nochmal neu angefertigt. Die Kabelliste ist immer unterschiedlich lang, mal mehr mal weniger Kabel mit 4 Adern.
Daher muss das ganze intelligent sein, weshalb ich vermute ohne VBA geht da gar nichts :(

Ich habs in der Datei nochmal versucht zu erklären, irgendwie ist das gar nicht so einfach es für Außenstehende so zu formulieren, das es ohne Probleme verstanden werden kann
[attachment=3776]
So, ich habe dir erst einmal für die Kabelliste ein etwas anderes Layout einschließlich anderer Formeln spendiert.
Wegen der Intelligenten Liste einfach nur in Spalte_A und Spalte_B den Wert eingeben, der Rest wird dann automatisch ausgefüllt.

Ich muss jetzt erst einmal los Richtung Kundschaft, mal sehen, ob ich nachher noch Zeit für die restlichen Aufgaben finden ... Angel
Hi Weisser Wolf,

mein Namensvetter hat dir ja ebenfalls eine Lösung (imho die bessere) zu deiner ersten Frage gepostet.

Nun zu deinem zweiten Teil. Da würde mich interessieren, ob die Aderbeschriftung tatsächlich an den Kabeln angebracht wird. Falls ich mit meiner Vermutung richtig liege, dann würde es doch genügen, deine Liste zweimal auszudrucken.
Hallo,

ich habe auch etwas rumgebastelt.

Die Aderbeschriftung in der Tabelle Kabelliste wird bei mir per Vba erzeugt und sieht erweitert so aus:

Arbeitsblatt mit dem Namen 'Kabelliste'
 ABCDEFGHIJKLM
1KabelnummerAderzahl Aderbeschriftung
2i.111.1014 i.111.101i.111.101/1i.111.101/2i.111.101/3i.111.101/4i.111.101i.111.101/1i.111.101/2i.111.101/3i.111.101/4
3i.111.1022 i.111.102i.111.102/1i.111.102/2i.111.102i.111.102/1i.111.102/2    
4i.117.1012 i.117.101i.117.101/1i.117.101/2i.117.101i.117.101/1i.117.101/2    
5i.117.1022 i.117.102i.117.102/1i.117.102/2i.117.102i.117.102/1i.117.102/2    
6i.401.1014 i.401.101i.401.101/1i.401.101/2i.401.101/3i.401.101/4i.401.101i.401.101/1i.401.101/2i.401.101/3i.401.101/4
7i.401.1022 i.401.102i.401.102/1i.401.102/2i.401.102i.401.102/1i.401.102/2    
8i.401.1032 i.401.103i.401.103/1i.401.103/2i.401.103i.401.103/1i.401.103/2    
9i.401.1044 i.401.104i.401.104/1i.401.104/2i.401.104/3i.401.104/4i.401.104i.401.104/1i.401.104/2i.401.104/3i.401.104/4
10i.401.1054 i.401.105i.401.105/1i.401.105/2i.401.105/3i.401.105/4i.401.105i.401.105/1i.401.105/2i.401.105/3i.401.105/4
11i.401.1074 i.401.107i.401.107/1i.401.107/2i.401.107/3i.401.107/4i.401.107i.401.107/1i.401.107/2i.401.107/3i.401.107/4
12i.402.1014 i.402.101i.402.101/1i.402.101/2i.402.101/3i.402.101/4i.402.101i.402.101/1i.402.101/2i.402.101/3i.402.101/4
13i.402.1022 i.402.102i.402.102/1i.402.102/2i.402.102i.402.102/1i.402.102/2    
14i.402.1032 i.402.103i.402.103/1i.402.103/2i.402.103i.402.103/1i.402.103/2    
15i.402.1042 i.402.104i.402.104/1i.402.104/2i.402.104i.402.104/1i.402.104/2    
16i.402.1054 i.402.105i.402.105/1i.402.105/2i.402.105/3i.402.105/4i.402.105i.402.105/1i.402.105/2i.402.105/3i.402.105/4
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Anhand dieser Liste wird dann auf die Seiten verteilt.

Obiges aussehen und die Verteilung auf die Seiten erfolgt mit folgendem Code:

Code:
Option Explicit

Sub verteilen()
 Dim lngLetzte As Long
 Dim gesamtAnzahl As Long
 Dim anzahlSeiten As Long
 Dim i As Long
 Dim j As Long
 Dim k As Long
 Dim Seite As Long
 Dim Spalte As Long
 Dim Zeile As Long
 
 Application.ScreenUpdating = False
 With Worksheets("Kabelliste")
   lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
   gesamtAnzahl = Application.WorksheetFunction.Sum(.Range("B2:B" & lngLetzte)) * 2 + (lngLetzte - 1) * 2
   anzahlSeiten = Application.WorksheetFunction.RoundUp(gesamtAnzahl / 88, 0)
   .Range("D2:M" & lngLetzte).ClearContents
   For i = 2 To lngLetzte
     .Cells(i, 4) = .Cells(i, 1)
     For j = 1 To .Cells(i, 2)
       .Cells(i, j + 4) = .Cells(i, 1) & "/" & j
     Next j
     If .Cells(i, 2) = 4 Then
       .Range(.Cells(i, 9), .Cells(i, 13)).Value = .Range(.Cells(i, 4), .Cells(i, 8)).Value
     Else
       .Range(.Cells(i, 7), .Cells(i, 9)).Value = .Range(.Cells(i, 4), .Cells(i, 6)).Value
     End If
    Next i
 End With

 j = 0
 i = 0

 For Seite = 1 To anzahlSeiten
   With Sheets("Seite_" & Seite)
   Spalte = 0
   Zeile = 0
     Do While i <= lngLetzte And k < 88
       k = k + 1
       j = j + 1
       Spalte = Spalte + 1
       .Cells(Zeile + 2, Spalte) = Sheets("Kabelliste").Cells(i + 2, j + 3).Value
       If Sheets("Kabelliste").Cells(i + 2, j + 4) = "" Then
         j = 0
         i = i + 1
       End If
       If Spalte = 11 Then
         Spalte = 0
         Zeile = Zeile + 3
       End If
     Loop
   End With
   k = 0
 Next Seite
 Application.ScreenUpdating = True
End Sub

Ich verstehe nur nicht, warum Du in den Seiten 11 Spalten ausfüülen lässt, wo doch die Werte in der Aderliste in 6 oder 10 Spalten versteilt stehen können.
Das wäre meiner Meinung nach etwas strucktruierter.
(07.01.2016, 19:39)WillWissen schrieb: [ -> ]mein Namensvetter hat dir ja ebenfalls eine Lösung (imho die bessere) zu deiner ersten Frage gepostet.

Na ja, das beweist doch nur eines:
Je besser und vor allen Dingen vollständiger die Problembeschreibung (Lastenheft) ist, um so besser kann durch uns Helfer eine Lösung erstellt werden.
Ich bin ja ziemlich spät eingestiegen ...
Ich bin grad ganz überwältigt von soviel freundlicher Unterstützung :)
Ich werde mir das ganze erstmal nach und nach ansehen und versuchen zu verstehen.
Im Laufe des Tages werde ich nocheinmal Stellung nehmen :)


Zitat:atilla


Ich verstehe nur nicht, warum Du in den Seiten 11 Spalten ausfüülen lässt, wo doch die Werte in der Aderliste in 6 oder 10 Spalten versteilt stehen können.
Das wäre meiner Meinung nach  etwas strucktruierter.
Das ist ganz einfach: Die Folie auf die das ganze gedruckt wird, hat nunmal 11 Spalten. Da ein Blatt 5,39€ kostet, will ich natürlich so wenig wie möglich verschwenden. :)
So. Es hat doch etwas länger gedauert, als ich ursprünglich gedacht hatte. :20: 

Aber jetzt ist der Zeitpunkt gekommen, wo ich sagen kann, ich hab eure Lösungen verstanden und kann sie auch auf andere Dinge anwenden, das ist mir wichtig.
Nur Copy/Paste und funktioniert ist schön, aber nicht Sinn und Zweck der Übung.

@GMG-CC und @WillWissen: Vielen Dank an euch für eure Verbesserung meiner Tabelle. In diesem Fall nutze ich sie zwar nicht, aber ich konnte damit noch die ein oder andere Tabelle verfeinern. :18:

@atilla: Auch dir vielen Dank für deine Lösung. Letztendlich habe ich viel Zeit gebraucht um dahinter zukommen was dein Code zu welchem Zeitpunkt eigentlich macht. Aber ich habs irgendwie doch hinbekommen :18:

Wie gesagt VIELEN DANK an euch für die Unterstützung. Ich bin um ein vielfaches schlauer geworden :)


Kann man das Thema als erledigt makieren?!