Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Knifflige Angelegenheit für wahre Excel-Profis

Knifflige Angelegenheit für wahre Excel-Profis
30.01.2004 16:23:50
Dieter
Welcher Fachmann kann helfen? Kann Excel sowas? Ich habe beispielsweise in den Zellen A1 bis A20 die Zahlen 1 bis 20 eingetragen. Wenn ich nun z.B. erfragen will, wie sich die Zahl "3" aus den diversen Zellen zusammensetzen kann (es betrifft nur Addtionen), wäre hier die Anwort einfach, weil es nur die Zellen 1 und 2 oder nur die Zelle 3 sein kann. Kann man sich das auch errechnen lassen? Durch welche Zellenkombinationen könnte sich der Wert "50" z. B. zusammensetzen? Als Lösungsbeispiel "50" sollten z.B als Ergebnis "18,17,15" und "18,17,8,7" und wahrscheinlich noch einige hundert andere Möglichkeiten rauskommen Natürlich darf jeder Wert aus den Zellen nur einmal verwendet werden. Wie müßte ich das umsetzen?
Ist wahrscheinlich schon was für die wahren Excel-Profis???
Danke schon mal fürs Lesen, für ne brauchbare Lösung noch vielmehr.
Dieter

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Knifflige Angelegenheit für wahre Excel-Profis
30.01.2004 17:06:49
Bertold
Das hat aber mit Excel eigentlich gar nichts zu tun.
Soll jeder Summand nur einmal vorkommen?
Bertold
AW: Knifflige Angelegenheit für wahre Excel-Profis
30.01.2004 17:51:11
Dieter
Hallo!
Jeder Summand darf nur einmal vorkommen. Wenn nicht mit Excel, wie dann lösbar?
AW: Knifflige Angelegenheit für wahre Excel-Profis
30.01.2004 19:49:23
Josef Ehrensberger
Hallo Dieter!
Ein Ansatz könnte dieser Code sein.
Ist nicht von mir, sondern ergebnis des "Googelns"!
Ich hab in nur ein wenig abgewandelt. Es werden maximal
5 Summanden kombiniert.
Bereich mit den Summanden markieren und laufen lassen.


Sub Summand_Kombinationen_berechnen()
Dim Werte As Range
Dim spalte As Integer
Dim zeile As Long
Dim zStart As Long
Dim Gesucht As Double, Kombinationen As Double
Dim Startzeit As Variant
Dim As Integer, b As Integer, c As Integer, d As Integer, e As Integer
'I. Wertezelle feststellen & Inputbox darstellen
'-----------------------------------------------
Set Werte = Selection
spalte = Werte.Row + 3
zeile = Werte(1).Row
zStart = zeile
'Worksheets(1).UsedRange.SpecialCells(xlConstants, xlNumbers).Select
Kombinationen = Application.Combin(Werte.Count, 2) + _
   Application.Combin(Werte.Count, 3) _
   + Application.Combin(Werte.Count, 4) + Application.Combin(Werte.Count, 5)
'InputBox gibt einen String zurück, daher muß bei u.g. Vergleich der Rückgabestring
'mit CDbl in eine Zahl umgewandelt werden
Gesucht = CDbl(InputBox("2 bis 5 Schecks sind zusammen belastet worden. " & _
   "Maximal " & Kombinationen & " Kombinationsmöglichkeiten werden durchgerechnet ! " & Chr(13) & _
   Chr(13) & "Bitte die Summe angeben:"))
'Dauer der Berechnung feststellen (Timer auf Null stellen)
Startzeit = Timer
Application.ScreenUpdating = False
'II. Berechnung 2 möglicher Scheckkombinationen
'----------------------------------------------
'die innere Schleife muß zwingend bei a+1 und nicht bei 2 beginnen
'( ansonsten wird a+ b und b+ a gerechnet !)
   For a = 1 To Werte.Cells.Count - 1
      For b = a + 1 To Werte.Cells.Count
      'Range("A1").Activate
      'Binäre Rechenmethoden und deren Umandlung in absolute Zahlen kann zu
      'Problemen führen (Bsp.: 1 + 2 = 2,999988 !). Besser ist es statt dessen
      'auf eine möglichst kleine Differenz zu prüfen
      ["ABS(Berechnet-Gesucht) <0.001]
         If Abs(Werte.Cells(a) + Werte.Cells(b) - Gesucht) < 0.001 Then
         Cells(zeile, spalte) = Werte.Cells(a) & " + " & Werte.Cells(b) & " = " & Gesucht
         zeile = zeile + 1
         End If
      Next
   Next
'III. Berechnung 3 möglicher Scheckkombinationen
'-----------------------------------------------
   For a = 1 To Werte.Cells.Count - 2
      For b = a + 1 To Werte.Cells.Count - 1
         For c = b + 1 To Werte.Cells.Count
            If Abs(Werte.Cells(a) + Werte.Cells(b) + Werte.Cells(c) - Gesucht) < 0.001 Then
            Cells(zeile, spalte) = Werte.Cells(a) & " + " & _
               Werte.Cells(b) & " + " & Werte.Cells(c) & " = " & Gesucht
            zeile = zeile + 1
            End If
         Next
      Next
   Next
'IV. Berechnung 4 möglicher Scheckkombinationen
'----------------------------------------------
   For a = 1 To Werte.Cells.Count - 3
      For b = a + 1 To Werte.Cells.Count - 2
         For c = b + 1 To Werte.Cells.Count - 1
            For d = c + 1 To Werte.Cells.Count
               If Abs(Werte.Cells(a) + Werte.Cells(b) + Werte.Cells(c) + _
               Werte.Cells(d) - Gesucht) < 0.001 Then
               Cells(zeile, spalte) = Werte.Cells(a) & " + " & _
                  Werte.Cells(b) & " + " & Werte.Cells(c) & " + " & Werte.Cells(d) & " = " & Gesucht
               zeile = zeile + 1
               End If
            Next
         Next
      Next
   Next
'V. Berechnung 5 möglicher Scheckkombinationen
'---------------------------------------------
   For a = 1 To Werte.Cells.Count - 4
      For b = a + 1 To Werte.Cells.Count - 3
         For c = b + 1 To Werte.Cells.Count - 2
            For d = c + 1 To Werte.Cells.Count - 1
               For e = d + 1 To Werte.Cells.Count
                  If Abs(Werte.Cells(a) + Werte.Cells(b) + Werte.Cells(c) + _
                  Werte.Cells(d) + Werte.Cells(e) - Gesucht) < 0.001 Then
                  Cells(zeile, spalte) = Werte.Cells(a) & " + " & _
                     Werte.Cells(b) & " + " & Werte.Cells(c) & " + " & _
                     Werte.Cells(d) & " + " & Werte.Cells(e) & " = " & Gesucht
                  zeile = zeile + 1
                  End If
               Next
            Next
         Next
      Next
   Next
Application.ScreenUpdating = True
MsgBox "Dauer : " & Timer - Startzeit & " Sekunden!" & vbLf & vbLf & _
"Es wurden " & zeile - zStart & " Kombinationen gefunden!"
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

Gruß Sepp
Anzeige
AW: Knifflige Angelegenheit für wahre Excel-Profis
30.01.2004 20:04:23
andre
hallo josef,
kannst du mal application.combin dazutun?
unter 2000 und xp gibts das sonst nicht.
gruss andre
AW: quatsch - alles ok - o.t.
30.01.2004 20:09:32
andre
AW: Knifflige Angelegenheit für wahre Excel-Profis
31.01.2004 10:30:24
Dieter
Hallo!
Ich bin nicht der Superfachmann. Ich habe die Programmierung kopiert und ausgeführt. Es kommt Laufzeitfehler und dieser Bereich wird makiert:
"Kombinationen = Application.Combin(Werte.Count, 2) + _
Application.Combin(Werte.Count, 3) _
+ Application.Combin(Werte.Count, 4) + Application.Combin(Werte.Count, 5)"
Was mache ich noch falsch. Ich arbeite mit WIN 2000/Excel 2000.
Gruß Dieter
AW: Knifflige Angelegenheit für wahre Excel-Profis
31.01.2004 17:14:32
andre
hallo dieter,
da bin ich auch erst drüber gestolpert. habe die summe markiert und es ging nicht. wenn du die summanden markierst, also 5 stück (siehe hinweis von josef) von deinen 1-20 in spalte a und es sollte gehen.
gruss andre
Anzeige
@ andre + dieter
31.01.2004 17:43:41
Josef Ehrensberger
Hi,
Ihr könnt auch ruhig mehrals fünf Summanden
markieren, mein Hinweis bezog sich darauf,
das, egal wieviele Kombinationen möglich sind,
maximal Kombinationen mit fünf Summanden errechnet werden.

Nehmt aber zum Testen nicht zuviele, denn das kann dauern.
Gruß Sepp
AW: @ andre + dieter
31.01.2004 19:12:17
Dieter
Hallo Ihr beiden!
Wirklich cool. Mit meinen wirklich laienhaften VBA-Kenntnissen habe ich es sogar geschafft, jetzt schon 6 Kombinationen bilden zu können :))) Ziel sollen schon so 30 Kombinationen sein. Bin mal gespannt, ob ich soweit komme, und wenn ja, ob das überhaupt mein rechner mitmacht. Super Sepp. Du hast es wirklich drauf mit Excel.
Danke
Dieter
Anzeige
AW: Knifflige Angelegenheit für wahre Excel-Profis
31.01.2004 00:55:23
Horst
Ist mal wieder "der kleine Hobbypsychologe" an Werk, der die Excelprofis bei der Ehre packen will? Lass es!
Horst
AW: Knifflige Angelegenheit für wahre Excel-Profis
31.01.2004 10:03:37
Dieter
Wie bist Du denn drauf, Horst? Es geht mir um eine massive Arbeitserleichterung im Berufsleben. Aber Du scheinst wohl keine wirkliche Hilfe zu sein.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige