Thema Datum  Von Nutzer Rating
Antwort
Rot Summanden ermitteln
05.12.2013 00:23:21 Sinox
NotSolved
05.12.2013 06:14:08 Gast41701
NotSolved
06.12.2013 12:23:57 whocares
NotSolved

Ansicht des Beitrags:
Von:
Sinox
Datum:
05.12.2013 00:23:21
Views:
1289
Rating: Antwort:
  Ja
Thema:
Summanden ermitteln

Hallo,

ich habe folgenden Code, dass alle möglichen Summanden zu einer Summe ermittelt. Die Zahlen mit dem die Summanden gebildet werden sollen, gebe ich in Spalte A vor, die Summe in Spalte B und die möglichen Summanden zur Summe werden in Spalte D automatisch berechnet:

Option Explicit

Sub Summanden_ermitteln()
   Dim kk As Long, zz As Long, erg As String, ergT As String
   Dim Atst As Double, Amax As Double
   Dim anzZ As Long, ii As Long, umsch As Boolean, arrB() As Boolean

   
   anzZ = Cells(Rows.Count, 1).End(xlUp).Row - 1
   ReDim arrB(1 To anzZ)
   zz = 1
   Columns("C:D").ClearContents
   [C1:D1] = Split("Treffer Summanden")

   For ii = 1 To 2 ^ anzZ - 1
      Atst = 0
      erg = ""
      umsch = True
      For kk = anzZ To 1 Step -1
         If umsch Then
            arrB(kk) = Not arrB(kk)
            If arrB(kk) Then umsch = False
         End If
         Atst = Atst - arrB(kk) * Cells(kk + 1, 1)
         If Atst > Cells(2, 2) Then Exit For
         erg = IIf(arrB(kk), "1", "0") & erg
      Next kk
                               
      If Atst <= Cells(2, 2) And Atst >= Amax Then
         If Atst > Amax Then Amax = Atst
         If Amax = Cells(2, 2) Then
            zz = zz + 1
            Cells(zz, 3) = erg
            ergT = ""
            For kk = 1 To anzZ
               If arrB(kk) Then ergT = ergT & Cells(kk + 1, 1) & " + "
            Next kk
            Cells(zz, 4) = Left(ergT, Len(ergT) - 3)
         End If
      End If
   Next ii
   Cells(2, 2).Select
End Sub

 

Beispiel (Werte in Spalte D werden nach Codeausführung berechnet):

Spalte A (Zahlen):          Spalte B (Summe)          Spalte D (Summanden)

1                                            6                                             2+4

2                                                                                           1+2+3

4

 

Problem:

Bei kleineren Zahlen/ Berechnungen funktioniert der Code einwandfrei. Allerdings bei komplexeren Zahlen/ Berechnungen, wie z. B. bei einer Zahlenvorgabe von 1-100 und einer Summe von 150 bekomme ich immer den Fehler "Laufzeitfehler 6" -> Überlauf. Was bedeutet das den genau, und was müsste ich an dem Code modifizieren, dass auch komplexere Berechnungen durchgeführt werden können? Datentypen habe ich auch schon veränderrt, von int zu long, aber der Fehler besteht immernoch.

Vielen Dank für Hilfen oder Hinweise!

Gruß

Sinox

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Summanden ermitteln
05.12.2013 00:23:21 Sinox
NotSolved
05.12.2013 06:14:08 Gast41701
NotSolved
06.12.2013 12:23:57 whocares
NotSolved