AHNUNG? Geschrieben 16. November 2015 Geschrieben 16. November 2015 Hallo zusammen, ich habe abe ein kleines mathematische Problem bei dem mir vllt. einer helfen kann. ich habe zwei Variablen a = 500 b = 2 a x b = 1.000 nun die Ergebnisse der Überprüfung. 2 x 500 = ok 4 x 250 = ok 6 x 166 = ok Alle Längen über 250 (wenn Variable = 500) passen nur ein Mal. 3 x 251 = falsch (passt zwar für die Gesamtlänge (1.000), aber nicht für die Einzellänge von 500 vielleicht kann ja jemand helfen. vielen Dank im Voraus Ahnung? Zitieren
RipperFox Geschrieben 17. November 2015 Geschrieben 17. November 2015 Ich würde ja gern helfen - aber aus deinem Beitrag wird leider nicht klar, wo das Problem liegt. Dank des Titels kann man wenigstens erahnen, dass es um VBA geht. Aber weder nennst Du die Art/Typ der Variablen (http://www.vba-tutorial.de/variablen/datentypen.htm) noch teilst Du uns überhaupt mit was Du genau vorhast und wie der Rechenweg aussieht. Was für "Gesamt-/Einzellängen" sollen WIE überprüft werden? Aber vielleicht hast Du nur einen Integer-Überlauf und ich dir mit dem obigen Link schon geholfen.. Zitieren
AHNUNG? Geschrieben 17. November 2015 Autor Geschrieben 17. November 2015 (bearbeitet) Hallo, die Variablen sind völlig egal ;-) Da es sich um Zahlen handelt würde ich aber Integer wählen! Mir geht es doch gerade um die Rechnung (kleines mathematisches Problem!), die ich anstellen muss um das oben aufgezeigte Ergebnis zu erhalten. Es geht um Längenberechnung! Im o.g. Beispiel habe ich eine Gesamtlänge von 1.000mm. 3 x 251mm = 753mm es passt zwar in 1.000mm, das Programm würde dann aber trotzdem einen Fehler erzeugen, da es mit den Einzellängen von jeweils 500mm nicht geht! Nun mehr Licht im Dunkeln? AHNUNG? Bearbeitet 17. November 2015 von AHNUNG? Zitieren
Ulfmann Geschrieben 17. November 2015 Geschrieben 17. November 2015 Was meinst du denn mit "passen" und was sind die "Einzellängen"? Kannst du das vielleicht etwas greifbarer darstellen? Das, was du suchst, kann schwer vorhergesehen werden, wenn der Kontext fast komplett fehlt. Ich hab zwar ne Vermutung, in welche Richtung das geht, aber das Ganze hat doch überhaupt nix mit VBA zu tun, sondern reine Algorithmik richtig? Zitieren
arlegermi Geschrieben 18. November 2015 Geschrieben 18. November 2015 vor 22 Stunden, AHNUNG? sagte: 3 x 251mm = 753mm es passt zwar in 1.000mm, das Programm würde dann aber trotzdem einen Fehler erzeugen, da es mit den Einzellängen von jeweils 500mm nicht geht! Was heißt "geht mit Einzellängen von jeweils 500mm nicht"? Muss das Gesamtergebnis ein Vielfaches von 500 sein? Dann passt 6*166 aber auch nicht... Kannst du nicht einmal erklären, worum es bei der Rechnung überhaupt geht? Mir scheint, als wäre das eine Aufgabe, zu der Hintergrundinformationen notwendig sind, die hier keiner (außer dir) kennt. Zitieren
AHNUNG? Geschrieben 18. November 2015 Autor Geschrieben 18. November 2015 Hallo Arlegermi, ich möchte noch einmal erwähnen, dass es um eine Plausibilitätsprüfung (ausgeführt als VBA-Code) gehen soll. Ich habe zwei Holzbretter mit jeweils 500cm Länge. Die Länge und die Anzahl kann natürlich variabel sein. Wenn ich in der Arbeitsvorbereitung nun sage, dass der im Zuschnitt aus 2 x 500cm bitte 6 x 166cm dann ist das möglich....jeweils 498cm pro Brett und 2cm Rest. Wenn ich dagegen sage, dass er bitte 5 x 167cm machen soll ist das nicht möglich, da ich aus jedem Holzbrett nur 2 x 167cm (=334cm) herausbekommen würde. Die Plausibilitätsprüfung müsste dann sagen, dass ich für 5 x 167cm ein weiteres Brett (500cm) bestellen müsste. Verstanden?.......sorry, ich kann das Problem nicht plastischer darstellen ;-) Zitieren
Hellspawn304 Geschrieben 18. November 2015 Geschrieben 18. November 2015 Ich glaub was du suchst ist Mod bzw. regular division. Schau mal hier. Zitieren
arlegermi Geschrieben 18. November 2015 Geschrieben 18. November 2015 (bearbeitet) vor 2 Stunden, AHNUNG? sagte: Verstanden?.......sorry, ich kann das Problem nicht plastischer darstellen ;-) Ja, jetzt ist es klar geworden. Folgender Ansatz: Du hast: Länge_haben = 500 Anzahl_haben = 2 Du prüfst: Länge_prüf = 251 Anzahl_prüf = 3 1. Schritt: Länge_prüf * Anzahl_prüf <= Länge_haben*Anzahl_haben ? Hier: 251 * 3 <= 500 * 2? true 2. Schritt: Länge_haben / Länge_prüf (ganzzahlig) Hier: 500 / 251 = 1 3. Schritt: Ergebnis aus Schritt 2 mit Anzahl_haben multiplizieren Hier: 1 * 2 4. Schritt: Ergebnis_S3 >= Anzahl_prüf Hier: 2 >= 3? false -> Fehler Das ist jetzt ganz naiv, einfach Schritt für Schritt die Angaben auswerten. Das kann man sicher cleverer gestalten. Bearbeitet 18. November 2015 von arlegermi Zitieren
AHNUNG? Geschrieben 19. November 2015 Autor Geschrieben 19. November 2015 Hallo zusammen, ich habe das Problem nun gelöst. Vielen Dank an alle. Hier mein - funktionierender - VBA-Code! Do While ActiveSheet.Cells(Zeile, Spalte - 3).Value <> "ENDE" If ActiveSheet.Cells(Zeile, Spalte + 4).Value <> "" Then If ActiveCell.Value = Tabelle2.Range("D15").Value Or ActiveCell.Value = Tabelle2.Range("D18").Value Then Bestelllaenge = ActiveSheet.Cells(Zeile, Spalte + 3).Value Bestellanzahl = ActiveSheet.Cells(Zeile, Spalte + 4).Value Solllaenge = ActiveSheet.Cells(Zeile, Spalte + 5).Value Sollanzahl = ActiveSheet.Cells(Zeile, Spalte + 6).Value If Solllaenge * Sollanzahl <= Bestelllaenge * Bestelllaenge Then Laenge_Pruef = Bestelllaenge / Solllaenge Laenge_Pruef = WorksheetFunction.RoundDown(Laenge_Pruef, 0) Anzahl_Pruef = Laenge_Pruef * Bestellanzahl Anzahl_Pruef = WorksheetFunction.RoundDown(Anzahl_Pruef, 0) If Anzahl_Pruef >= Sollanzahl Then ActiveSheet.Cells(Zeile, Spalte + 4).Select Selection.Interior.Color = 13434828 ActiveSheet.Cells(Zeile, Spalte).Select ActiveSheet.Cells(Zeile, Spalte + 20).Value = 0 Else ActiveSheet.Cells(Zeile, Spalte + 4).Select Selection.Interior.Color = 8420607 ActiveSheet.Cells(Zeile, Spalte).Select ActiveSheet.Cells(Zeile, Spalte + 20).Value = 1 End If End If End If End If Zeile = Zeile + 1 ActiveSheet.Cells(Zeile, Spalte).Select Loop Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.