ich benötige Hilfe bei einer meiner Tabellen und ich fürchte dass es den Rahmen sprengen würde wenn ich das ganze hier poste, vielleicht findet sich ja jemand der heute nachmittag sich 10 minuten mein problem anhören kann (vielleicht über teamspeak o.ä.) und mir dann weiterhelfen kann :100:
Hi, kannst du denn die ungefähre Richtung angeben, wohin eine Lösung gedacht ist? Geht es eher um Formeln oder um eine programmtechnische (VBA) Möglichlichkeit? Oder um den grundsätzlichen Aufbau deiner Tabelle (Struktur, Datenmodelle)?
ich habe eine tabelle, da stehen 10 spieler drinne, jeder kann 3 positionen spielen von 5 insgesamt
ich brauche immer 5 spieler und jede position soll einmal besetzt werden, ich möchte also in meine liste eintragen welche 5 spieler anwesend sind und die liste soll mir ausgeben welcher spieler welche position spielen soll, jede position soll natürlich nur einmal besetzt werden. dafür brauche ich die Formel, btw einen Ansatz wie man das lösen kann, bitte jetzt nicht einfach schreiben sverweis oder so, sondern auch wie ich den formulieren muss
08.04.2018, 23:37 (Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2018, 23:39 von Ego.)
Hallo J...,
das könnte man am einfachsten mit einem kleinen Programm(VBA) lösen, das alle möglichen Kombinationen die fünf Positionen zu besetzen durchprobiert. Hier noch einige Fragen:
1) Kannst du eine Lösung mit einem Programm akzeptieren? (Wenn ja weiter) 2) Hast du schon Vorstellungen wie du die Eingabe machen möchtest? (Dann bitte eine Beispieldatei) zb. Eingabe der Positionen als Zahl oder als Text. 3) Was soll passieren, wenn mehr als eine Kombination möglich ist? Sollen dann alle möglichen Kombinationen ausgegeben werden oder nur die optimale, für die du dann aber vorgeben muss, woran das Programm erkennen kann welche Kombination besser ist? 4) Willst du immer genau 5 Spieler vorgeben, oder soll das Programm aus einer Liste von 5-10 Spielern die mögliche(n) Kombination(en) ausgeben?
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • JDGaming
Zu 1, können denn andere die datei dann auch benutzen? aber für mich ist das kein Problem, ich kann gerne damit arbeiten zu 2, ich habe schon eine Datei erstellt, an sich möchte ich die Namen der Spieler verwenden für die Eingabe, also Wörter. zu 3, im Idealfall weiß ich von jedem Spieler seine persönliche Rangfolge der 3 Positionen, von daher wäre in so einem Fall wo mehrere Kombinationen möglich sind noch die persönliche Preäferenz des einzelnen Spieler zu berücksichtigen. zu 4, ich brauche die Tabelle für einen Spieltag, dh wenn wir uns dafür vorbereiten wird irgendwann klar sein welche 5 Spieler spielen werden, dann möchte ich diese Namen eingeben und das Programm soll mir für genau diese Kombination die beste Aufteilung mitteilen.
in der Anlage einmal eine erste Version. Da du noch keine genaueren Angaben gemacht hast, was es für dich bedeutet "die persönliche Preäferenz des einzelnen Spieler zu berücksichtigen", habe ich zur Zeit in jeder möglichen Kombination für alle Spieler die Rangnummer des zugeordneten "Operators" addiert und gebe eine Kombination mit der niedrigsten Summe aus.
Code:
Option Explicit Dim intMaxAnz As Integer Dim intWertOpt As Integer Dim intWertAkt As Integer Dim intAktPos() As Integer Dim intAktRest() As Integer Dim intSpieler() As Integer Dim varOperator As Variant Dim varOperatoren As Variant
Private Sub cbTuwat_Click() Dim intPosHeute As Integer Dim intPosSpieler As Integer Dim intPosRang As Integer Dim intPosPosition As Integer Dim varSpieler As Variant Dim varHeuteSpielt As Variant
varOperator = ThisWorkbook.Names("Operator").RefersToRange.Value varSpieler = ThisWorkbook.Names("Spieler").RefersToRange.Value varHeuteSpielt = ThisWorkbook.Names("HeuteSpielt").RefersToRange.Value ThisWorkbook.Names("Operatoren").RefersToRange.Value = "" varOperatoren = ThisWorkbook.Names("Operatoren").RefersToRange.Value intMaxAnz = UBound(varOperator, 1) ReDim intAktRest(1 To intMaxAnz) ReDim intAktPos(1 To intMaxAnz) ReDim intSpieler(1 To intMaxAnz, 1 To 3)
'--------------------------------------------------------- ' Daten einlesen in "intSpieler" udn "intRest" '---------------------------------------------------------
For intPosHeute = 1 To intMaxAnz intAktRest(intPosHeute) = intPosHeute For intPosSpieler = 1 To UBound(varSpieler, 1) If varSpieler(intPosSpieler, 1) = varHeuteSpielt(intPosHeute, 1) Then For intPosRang = 1 To 3 For intPosPosition = 1 To intMaxAnz If varOperator(intPosPosition, 1) = varSpieler(intPosSpieler, intPosRang + 2) Then intSpieler(intPosHeute, intPosRang) = intPosPosition Exit For End If Next intPosPosition Next intPosRang Exit For End If Next intPosSpieler Next intPosHeute intWertAkt = 0 intWertOpt = intMaxAnz * 9 + 1 Call RecursivSpieler(1)
If intWertOpt = intMaxAnz * 9 + 1 Then MsgBox "Keine gültige Zuordnung möglich." End Sub Sub RecursivSpieler(ByVal intLokSpieler As Integer) Dim intLokPos As Integer Dim intLokRang As Integer Dim intLokWert As Integer For intLokRang = 1 To 3 If intAktRest(intSpieler(intLokSpieler, intLokRang)) <> 0 Then intAktPos(intLokSpieler) = intSpieler(intLokSpieler, intLokRang) intAktRest(intSpieler(intLokSpieler, intLokRang)) = 0 intLokWert = intLokRang intWertAkt = intWertAkt + intLokWert If intWertAkt < intWertOpt Then If intLokSpieler < intMaxAnz Then Call RecursivSpieler(intLokSpieler + 1) Else intWertOpt = intWertAkt For intLokPos = 1 To intMaxAnz varOperatoren(intLokPos, 1) = varOperator(intAktPos(intLokPos), 1) Next intLokPos ThisWorkbook.Names("Operatoren").RefersToRange.Value = varOperatoren End If End If intWertAkt = intWertAkt - intLokWert intAktRest(intSpieler(intLokSpieler, intLokRang)) = intSpieler(intLokSpieler, intLokRang) End If Next intLokRang End Sub
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • JDGaming
ok wow das ist echt weit über dem was ich von excel verstehe :s erst noch einmal vielen vielen dank für deine Mühe! ich habe inzwischen meine tabelle selber noch ein wenig erweitert, vielleicht bekommst du das hin jetzt quasi diese beiden tabellen in eine zu bekommen x) in meiner neueren version möchte ich zusätzlich noch in B6-B10 automatisch die zu spielenden operatoren für die oben ausgewälte map angezeigt bekommen, bekomme das aber akutell nicht hin, vielleicht hast du ja auch da noch eine idee? :/
ansonsten ist deine Idee schon perfekt, muss jetzt nurnoch in meine tabelle rein und dann bin ich glücklich und alles passt, wenn du lust hast kannst du dich ja da nochmal ran setzten, bei fragen einfach fragen.
Hallo nochmal, ich bin jetzt wieder mal weiter gekommen und befinde mich in der Endphase der Tabelle, brauche allerdings noch ein letztes Mal Hilfe:
Ich habe jetzt alles Relevante eingetragen, muss aber noch die Daten mit "Dem Code" verknüpfen, da bin ich dann auch schon wieder mit meinem Latein am Ende...
Auf dem Hauptblatt ist jetzt die Bedienung zu sehen, auf dem Reiter "Spieler" findet man alle Spieler und eine Liste in der man seine eigene Rangordnung der zu Spielenden Operatoren eintragen kann, in die Dritte Tabelle sind alle Maps und deren Spots eingetragen, wir müssen jetzt nurnoch selber eintragen welche Operatoren auf welchem Spot zu spielen sind, die bereiche sind allerdings schon als Liste eingetragen, es muss also wie gesagt nurnoch verknüpft werden, ich hoffe mir kann jemand noch ein mal helfen.
das sieht ein wenig anders aus. Ich werd die Überarbeitung heute beginnen. Aber hier noch einige Fragen:
1. Warum denn nicht gleich so?
2. Ist es richtig, dass unter den Ops in E7: I7 die zugeordneten Spieler eingetragen werden sollen?
3. Ist es richtig, dass alle zugeordneten Ops und nicht nur die ersten drei berücksichtigt werden sollen?
4. Hast du dir noch einmal Gedanken gemacht wie "die persönliche Preäferenz des einzelnen Spieler zu berücksichtigen" ist? zB 1. Als Position in der Spielerliste oder 2. als Position in der Liste der der benutzten Ops oder 3. ????
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.