Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
Habe die Tabelle nicht angeschaut. 2401 für nur 128. Für jeden 4er Schritt bis 176 entsprechend noch mal. Aber immer noch überschaubar.
Registriert seit: 22.01.2018
Version(en): 2010, 2016
29.03.2018, 14:41
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 14:41 von Terades.)
Ah ok. Dann hier nochmal allgemein die Fakten ganz allgemein zusammen gefasst.
Gesamt Seitenzahlen: 128, 132, 136, 140, 144, 148, 152, 156, 160 ,168, 176
Devisoren: 16, 20, 24, 28, 32, 40, 48. (Mit einer Kombination dieser Zahlen muss die erforderliche Seitenzahl erreicht werden.)
Parts immer 4.
Rest muss immer 0 sein.
Bsp:
- 128 = 32, 32, 32, 32
- 128 = 32, 24, 32, 40
- 128 = 20, 28, 32, 48
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
29.03.2018, 15:19
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 15:54 von Elex.)
Hi
wenn ich es richtig verstanden haben, bleiben am Ende 73 Möglichkeiten.
Kombi.xlsx (Größe: 9,23 KB / Downloads: 6)
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28
• Terades
Registriert seit: 22.01.2018
Version(en): 2010, 2016
29.03.2018, 15:22
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 15:22 von Terades.)
Wow Elex. Ja genau sowas habe ich gebraucht.:D Hast du jetzt aber nicht von Hand gemacht oder?:(
DANKE
Registriert seit: 26.07.2017
Version(en): 365
Als Denkansatz innerhalb von VBA:
Code:
Sub ErstelleParts()
Dim Seite As Byte
Dim Divisor(1 To 7)
Dim Teil1
Dim Teil2
Dim Teil3
Dim Teil4
Dim Zwischensumme
; folgende Daten aus Tabelle auslesen:
Seite = 128
Divisor(1) = 16
Divisor(2) = 20
Divisor(3) = 24
Divisor(4) = 28
Divisor(5) = 32
Divisor(6) = 40
Divisor(7) = 48
For Teil1 = 1 To 7
For Teil2 = 1 To 7
For Teil3 = 1 To 7
For Teil4 = 1 To 7
Zwischensumme = Divisor(Teil1) + Divisor(Teil2) + Divisor(Teil3) + Divisor(Teil4)
If Zwischensumme = Seite Then
Debug.Print Divisor(Teil1); Divisor(Teil2); Divisor(Teil3); Divisor(Teil4)
End If
Next
Next
Next
Next
End Sub
Ich habe die Daten manuell im Programm eingetragen, die müsstest du dir aus den entsprechenden Zellen einlesen.
Die vier
For ... Next-Schleifen beziehen sich hierbei nur auf
4 Teile (müsstest du entsprechnd anpassen, wenn mehr oder weniger).
Die Ausgabe erfolgt nur im Direkfenster zum Ausprobieren. Kann man dann später in den Zellen ausgeben lassen.
Noch sind doppelte Zahlenreihen möglich, weil die Reihenfolge keine Rolle spielt.
Wie gesagt: soll nur ein Denkansatz sein.
Herzliche Grüße aus dem Rheinland
Jörg
[Windows 10, Microsoft 365]
Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag 28
• Terades
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
Klar von Hand!
Nein natürlich nicht. Fragen zu Kombis gab es immer mal wieder. Hatte mir da was gebastelt und wie es scheint war es auch für den Fall halbwegs brauchbar.
Registriert seit: 22.01.2018
Version(en): 2010, 2016
Cooler Ansatz Lucky
Läuft schön schnell durch. :)
Code:
Sub ErstelleParts()
Dim Seite As Byte
Dim Divisor(1 To 7)
Dim Teil1
Dim Teil2
Dim Teil3
Dim Teil4
Dim Zwischensumme
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Z = 17
s = 2
For s = 2 To 12
' folgende Daten aus Tabelle auslesen:
Seite = Range("A" & s).Value
Divisor(1) = Range("B2").Value
Divisor(2) = Range("B3").Value
Divisor(3) = Range("B4").Value
Divisor(4) = Range("B5").Value
Divisor(5) = Range("B6").Value
Divisor(6) = Range("B7").Value
Divisor(7) = Range("B8").Value
For Teil1 = 1 To 7
For Teil2 = 1 To 7
For Teil3 = 1 To 7
For Teil4 = 1 To 7
Zwischensumme = Divisor(Teil1) + Divisor(Teil2) + Divisor(Teil3) + Divisor(Teil4)
If Zwischensumme = Seite Then
Range("B" & Z) = (Divisor(Teil1) & ";" & Divisor(Teil2) & ";" & Divisor(Teil3) & ";" & Divisor(Teil4))
Range("A" & Z) = Seite
Z = Z + 1
End If
Next
Next
Next
Next
Next
Call Splitten
Application.ScreenUpdating = True
End Sub
Klar sind jetzt noch doppelte dabei mal sehen wie ich die weg bekomme. Hab ja nen vergleich wie es dann sein muss. (dank Elex)