Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
568to572
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
568to572
568to572
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

= Kombinationen (n;k) auch die "dazwischen"

= Kombinationen (n;k) auch die "dazwischen"
16.02.2005 12:21:45
Giuseppe
Hallo Excel und VBA Freunde
Ich habe da ein grösseres Problem:
Ich sollte die Position einer Zahlenkette bestimmen.
Da die letzte Zahl (Z4) "nur" bis 25 geht, ist die mathematische bestimmung
sehr schwierig.
Bedingungen:
- Es kommt keine Zahl (Z1 bis Z4) doppelt vor (in der Zeile gesehen)
- Alle Zahlen (Z1 bis Z4) sind natürliche Zahlen
- Z1 = Z2 - 1 , Z2 = Z3 - 1 , Z3 = Z4 - 1
- DER MAXIMALWERT VON Z4 IST IMMER 25
Beispiel:
(Die linke Kette, sind die Zahlen Z1 bis Z4, im Format "00")
(Die rechte Zahl, ist das Ergebnis, bzw. die Position)
01020304 = 1
01020305 = 2
.
.
.
01020324 = 21
01020325 = 22
01020405 = 23
01020406 = 24
.
.
.
01020516 = 54
.
.
.
22232425 = 12650
Ich könnte eine Matrix erstellen, doch die Rechenzeit ist zu lange.
Ach ein VBA Projekt, das mir alle Positionen durchrechnet (Zähler) kommt leider auch nicht in frage.
Deswegen suche ich nach einer Funktion, Formel oder einem VBA Projekt.
Das Ziel ist die Eingabe der Kette, mit dem Resultat der Position.
Die Letzte Position lässt sich mit
= Kombinationen(25,4)
ermitteln.
Doch wie ist es mit allen anderen?
Kann mir da vielleicht jemand weiterhelfen?
mfG
Giuseppe

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: = Kombinationen (n;k) auch die "dazwischen"
Hans
Da braucht es keine Kombinationen, wenn ich Deinen VOrtrag richtig verstnaden haben.
Du hast ein Zahlensystem auf der Basis von 25, wo bei Deine Zahlenreihe bei
01 02 03 04 = 16954 Dezimal startet
und bei
24 24 24 24 = 390624 Dezimal endet
Deine Position ist p*25^3+x*25^2+y*25+z - 16953, wobei pxyz Deine Kombination darstellt
Gruß HW

WebSite:Excellenzen & Powerpoint interaktiv
PowerPoint-Anwender www.ppt-user.de

AW: = Kombinationen (n;k) auch die "dazwischen"
16.02.2005 13:23:55
Giuseppe
Hallo Hans W. Hofmann
Erst mal vielen herzlichen Dank!
Leider, leider funktioniert es noch nicht, so wie ich es gerne möchte.
Dein Ansatz, mit der Formel ist aber durchaus genial... genau so etwas suche ich.
Schaue Dir doch mal die Beispielmappe an:
https://www.herber.de/bbs/user/18168.xls
Ich versuche schon seit Tagen dieses Problem zu lösen....
mfG
Giuseppe
Anzeige
benutzerdef. funktion
IngoG
Hallo Giuseppe,
was hälst Du von folgender benutzerdefinierter Funktion:

Function mein_rang(a1%, a2%, a3%, a4%) As Double
Application.Volatile
mein_rang = 0
Do While (a1 > 0 And a1 < a2 And a2 < a3 And a3 < a4 And a4 <= 25)
If a4 - a3 > 1 Then
a4 = a4 - 1
ElseIf a3 - a2 > 1 Then
a4 = 25
a3 = a3 - 1
ElseIf a2 - a1 > 1 Then
a4 = 25
a3 = 24
a2 = a2 - 1
Else
a4 = 25
a3 = 24
a2 = 23
a1 = a1 - 1
End If
mein_rang = 1 + mein_rang
Loop
End Function

einfach in ein Modul kopieren und in der Tabelle zB =mein_rang(1,2,3,4) eingeben
bei mir funzt es...
Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
Mein Held
16.02.2005 16:54:29
Giuseppe
Hallo Ingo
Eine Rückmeldung willst Du?
Wenn Du eine Frau wärst, würde ich Dich aufsuchen und küssen:)
Absolut Perfekt!
Ich war schon mehrere Tage und Nächte, hinter diesem Problem.
Nach vielen Fehlversuchen gab ich auf...
Stempel: Unlösbar!
Ich dachte auch, das Excel-Forum sei evt.
der falsche Ort für diese Frage.
Es ist ja in erster Linie ein mathematisches Problem...
... Es hat sich wieder mal herausgestellt: Nie aufgeben!
Danke, danke
mfG
Giuseppe
Danke für die Rückmeldung ;-)
IngoG
Hallo Giuseppe,
hatte zuerst einen rekursiven ansatz. Das funzt auch, aber bei großen Zahlen steigt excel mit stack-overflow aus...
im prinzip ist es ja nur ein triviales zählen aller kleineren gültigen lösungen.
also freut mich, dass ich Dir helfen konnte
Gruß Ingo
Anzeige
Hallo Ingo... noch eine Frage
17.02.2005 09:54:02
Giuseppe
Hallo Ingo
Ich hätte da noch eine Bitte:
Meine Zahlen (a1 bis a4) werden AUCH im VBA erzeugt.
Könnte man die "Benutzerdefinierte Funktion" ins Makro einbauen?
Dieses Makro liegt in einer anderen Datei vor.
Es berechnet verschiedene Werte, als Resultat erhalte ich die Variablen
a1, a2, a3, a4... Da hätte ich gerne den "Rang" als Variable dazu.
Lässt sich da was machen?
mfG
Giuseppe
AW: Hallo Ingo... noch eine Frage
17.02.2005 11:18:00
Giuseppe
Hallo Ingo
Ich habe mal selbst versucht:

Sub mein_rang2()
Dim a1 As Double, a2 As Double, a3 As Double, a4 As Double
Dim mein_rang2 As Double
a1 = 22
a2 = 23
a3 = 24
a4 = 25
Application.Volatile
mein_rang2 = 0
Do While (a1 > 0 And a1 < a2 And a2 < a3 And a3 < a4 And a4 <= 25)
If a4 - a3 > 1 Then
a4 = a4 - 1
ElseIf a3 - a2 > 1 Then
a4 = 25
a3 = a3 - 1
ElseIf a2 - a1 > 1 Then
a4 = 25
a3 = 24
a2 = a2 - 1
Else
a4 = 25
a3 = 24
a2 = 23
a1 = a1 - 1
End If
mein_rang2 = 1 + mein_rang2
Loop
MsgBox (mein_rang2)
End Sub

Ist das so ok?
mfG
Giuseppe
Anzeige
AW: Hallo Ingo... noch eine Frage
IngoG
Hallo Guiseppe,
binde doch einfach die ganze

Function ein und greife in deiner 

Sub auf die 

Function zu...
also ugf so:

Function mein_rang(...)...
End Function


Sub Deine_Sub
dim a1%, a2%, a3%, a4%, rang as double
... (hier stehen deine ganzen befehle einschließlich berechnung a1-a4)
rang=mein_rang(a1,a2,a3,a4)
End Sub

AW: Hallo Ingo... noch eine Frage
18.02.2005 11:13:40
Giuseppe
Hallo Ingo
Danke für den Hinweis.
Aber weshalb sollte das Makro zweimal aufgeführt werden (Function und Sub)?
Ich habe diese Berechnungen auf zwei verschiedenen Exceldateien:
- Die erste ist nur für die Funktion (Mein_rang) im Excel
- Die zweite ist eine reine VBA Berechnung, ohne Excel (fast)
Wenn ich jetzt im gleichen Code, beide Makros aufliste,
so brauchts ja mehr Berechnungszeit...
Ich brauche jede Milisekunde, zugegeben, dies mit (45,4) war nur ein
Beispiel... ich spiele mit grösseren Zahlen (habe natürlich den Code
dementsprechend angepasst).
mfG
Giuseppe
Anzeige
AW: Hallo Ingo... noch eine Frage
IngoG
Hallo Guiseppe,
das "macro" wird nicht 2mal ausgeführt, sondern nur einmal undzwar beim aufruf der function.
ME ist das nur unwesentlich langsamer aber wesentlich übersichtlicher und wartungsfreundlicher.
wenn es aber die einzige stelle ist, wo du die funktionalität benötigst, kannst Du den Code nat auch direkt in deine Sub schreiben.
Gruß Ingo
Danke
18.02.2005 14:20:38
Giuseppe
Hallo Ingo
Danke für alle Deine Mühe.
Ich denke, ich werde Dich nicht weiter mit dieser Problematik belästigen.
Ich habe nun genügend Ansätze, Regeln und Vorschläge...
Du hast mir echt geholfen, bessten Dank!
mfG
Giuseppe
Anzeige
Gerne, Danke für die Rückmeldung oT
IngoG
.
AW: = Kombinationen (n;k) auch die "dazwischen"
Hans
Hab Deinen Vortrag doch nicht richtig verstanden :-):
http://www.lemitec.de/public
siehe im Statistikteil
Gruß HW
AW: = Kombinationen (n;k) auch die "dazwischen"
18.02.2005 14:58:28
Giuseppe
Hallo Hans
Danke für den Hinweis(link)
Ich sehe, wir haben beide das selbe Hobby ;)
mfG
Giuseppe

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige