Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Differenz
#11
Hallo zusammen,

hier bin ich auch von meinem Ansatz überzeugt.

Er hat untereinander in einer Spalte Zahlen stehen.
Dann gibt er in eine bestimmte Zelle eine Zahl ein.

Es soll jetzt in der Spalte der Zahlen nach den Zahlen gesucht werden, die in der Summe die eingegebene Zahl ist.
Das kann eine zahl sein, das kann eine Kombi aus zwei Zahlen sein (was der TE als meist vorzufinden angibt), das können  auch mehrer zahlen sein.

Es gibt 2^n Möglichkeiten, wobei n die Anzahl der Zahlen in der Liste ist.

Ich verstehe nur nicht, warum er den Code nicht testet.
Gruß Atilla
Antworten Top
#12
(18.02.2016, 17:12)radagast schrieb: heje excelfreunde, FC1911,

FC1911, anhand welcher mermale unterscheiden sich deine zahlen.... bzw. anhand welcher merkmale ist zu erkennen, welche zahlen zusammengefasst werden sollen und welche nicht...

Hallo radagast,

das ist schwierig zu erklären.
Ich gebe eine Zahl "1100" vor und möchte, das Excel aus einer Spalte, die Werte in eine oder mehrere Felder, die Werte wiedergibt, die diese Zahl ergibt. Mir würde es auch reichen, wenn Excel mir die Zeilen nennen könnte in der die Werte stehen, die diese Zahl ergeben.
Die Zahl (1100) kann sich aus mindestens zwei oder mehr Zahlen zusammensetzen.

Gruß
FC1911
Antworten Top
#13
(18.02.2016, 20:12)schauan schrieb: Hallo FC1911,

mal die Frage zur Zusammenstellung anders formuliert - was soll raus kommen, wenn es mehr als eine Möglichkeit zur Lösung gibt? Im Moment gehen die Antworten von dem Ansatz aus, dass Du eine zahl vorgibst und in Deiner Liste sollen passende Summanden gesucht werden.
Da geht der Ansatz von WillWissen auch nicht an Deiner Frage vorbei. Trage dort mal die 1100 ein und Du wirst sehen, es stimmt.

Eine andere Auffassung Deiner Frage wäre eine Addition nach Farben. Willst Du eventuell alle grünen Zahlen addieren? Dann brauchst Du einen anderen Lösungsansatz.

Hallo schauan,

mehr als eine Möglichkeit sollte auch angezeigt werden, nur die Umsetzung erscheint mir unmöglich.
Ich gebe eine Zahl "1100" vor und möchte, das Excel aus einer Spalte, die Werte in eine oder mehrere Felder, die Werte wiedergibt, die diese Zahl ergibt. Mir würde es auch reichen, wenn Excel mir die Zeilen nennen könnte in der die Werte stehen, die diese Zahl ergeben.
Die Zahl (1100) kann sich aus mindestens zwei oder mehr Zahlen zusammensetzen.

Gruß
FC1911
Antworten Top
#14
Hallo,

Warum behandelst Du mich wie Luft? :22: 

ich hatte doch eine Lösung angeboten.
Warum gehst Du darauf überhaupt nicht ein.
Gruß Atilla
Antworten Top
#15
heje excelfreunde,FC1911,

ich muss mich an "Geschrieben von atilla - 18.02.2016, 11:45" und seiner lösung "mit Kaffeee" anschließen. warum,
du gibst eine zahl (hier 1100) vor und möchtest aus einem ensemble von zahlen eine vorgewählte zahl erstellen. ich glaube,
je gößer dein ensemble von zahlen ist, um so mehr kombinationen sind auch möglich.
also wie attila schon schreibt: => Kaffee ansetzen und keksdose holen.

nun FC1911: "mach mal Butter bei die Fische" und gebe mehr info/merkmale/bedingungen/usw. bekannt...
Vielen Dank
--Janosch
                                                     
Excel  2019 (64bit)  Win 10 Pro (64bit)                              
Antworten Top
#16
(18.02.2016, 11:45)atilla schrieb: Hallo,

das wird schwer bis nicht möglich.
Kommt auch entscheidend darauf an, wieviele Datensätze vorhanden sind.

Außerdem wird nicht immer eine Eindeutige Zuordnung möglich sein.

Unten ein Code, der bis zu 25 Summanden abarbeitet. Kannst aber einen Kaffe holen gehen, während er arbeitet.

Folgendes ist gegeben.
Deine Zahlen Max 25 (sonst bricht der Code ab) stehen in den Zellen A1:A25
In C1 steht die gesuchte Summe.

Ausgabe der Zahlen, die zu dieser Summe führen in Spalte B


Code:
Option Explicit

Sub summen_kombis()
    Dim lngAnzahl As Long, ar As Variant, i As Long, j As Long, dblVal As Double, dblSum As Double
    Dim k As Long
    lngAnzahl = Range("A1").End(xlDown).Row
    If lngAnzahl > 25 Then Exit Sub
    
    dblVal = Range("C1")
    ar = WorksheetFunction.Transpose(Range("A1").Resize(lngAnzahl))
    
    For i = 0 To 2 ^ lngAnzahl - 1
        dblSum = 0
        For j = 0 To lngAnzahl - 1
            If i And 2 ^ j Then dblSum = dblSum + ar(j + 1)
        Next
        If dblSum - dblVal = 0 Then
            For j = 0 To lngAnzahl - 1
                If i And 2 ^ j Then
                  If Application.CountIf(Range("B1:B" & k + 1), ar(j + 1)) = 0 Then
                    Cells(k + 1, 2) = ar(j + 1)
                    k = k + 1
                  End If
                End If
            Next
        End If
    Next
End Sub


Code von bst aus dem  MS-Office-Forum von mir erweitert

Um die Zahlen in Spalte A zu markieren, setzt Du folgende Formel ein:

=ZÄHLENWENN(B:B;A1)

Hallo atilla,

habe deinen Ansatz mit den Zahlen 10 - 10000 getestet. 
Mit den Zahlen (100+1000) wurde mir mit dem Makro anzeigt, welche Werte das Ergebnis ergeben. Ich werde das ganze noch ein mal mit komplexeren Werten testen.

Vielen Dank für deinen Ansatz.
Antworten Top
#17
Hallo zusammen,

Atillas Lösung hat soweit funktioniert, nur wie kriegt man das auf (zum Beispiel) 2000 Zeilen umgesetzt?
Ich würde mir auch 5 Kaffee holen gehen, wenn das irgendwie funktionieren würde.  :19:

Gruß
FC1911
Antworten Top
#18
Hallo,

so z.B:

Code:
Sub summen_kombis()
   Dim lngAnzahl As Long, ar As Variant, i As Long, j As Long, dblVal As Double, dblSum As Double
   Dim k As Long, t As Long
   t = 4
   k = 3
   
   Range(Cells(3, 4), Cells(Rows.Count, Columns.Count)).ClearContents
   lngAnzahl = Range("A1").End(xlDown).Row
   If lngAnzahl > 1000 Then Exit Sub
   
   dblVal = Range("C1")
   ar = WorksheetFunction.Transpose(Range("A1").Resize(lngAnzahl))
   
   For i = 0 To 2 ^ lngAnzahl - 1
       dblSum = 0
       For j = 0 To lngAnzahl - 1
           If i And 2 ^ j Then dblSum = dblSum + ar(j + 1)
       Next
       If Abs(dblSum - dblVal) < 0.00001 Then
           For j = 0 To lngAnzahl - 1
               If i And 2 ^ j Then
                 Cells(k, t) = ar(j + 1)
                 t = t + 1
               End If
           Next
           k = k + 1
           t = 4
       End If
   Next
End Sub



Die Summen-Kombis werden ab D3 neben und untereinander aufgelistet
Gruß Atilla
Antworten Top
#19
Hallo noch mal,

mit Kaffetrinken wird es wohl nichts.

Denn ich muss feststellen, das mit 1000 geht so nicht. Das wären 2^1000 Möglichkeiten

Es sind zu viele Kombinations-Möglichkeiten. Der ursprüngliche Verfasser des Codes hat die Limitierung auf 25 nicht willkürlich genommen.
Das sind die Grenzen des Machbaren für Excel.

Also im Code die Zahl 1000 mit 25 ersetzen um den Ablauf mal sehen zu können.
Gruß Atilla
Antworten Top
#20
(25.02.2016, 10:20)atilla schrieb: Hallo noch mal,

mit Kaffetrinken wird es wohl nichts.

Denn ich muss feststellen, das mit 1000 geht so nicht. Das wären 2^1000 Möglichkeiten

Es sind zu viele Kombinations-Möglichkeiten. Der ursprüngliche Verfasser des Codes hat die Limitierung auf 25 nicht willkürlich genommen.
Das sind die Grenzen des Machbaren für Excel.

Also im Code die Zahl 1000 mit 25 ersetzen um den Ablauf mal sehen zu können.

Hallo Atilla,
ich denke da gibt es keine zuverlässige Lösung.
Welche Möglichkeiten hat man da in anderen Programmen? Access oder ähnliches?

Gruß
FC1911
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste