Clever-Excel-Forum

Normale Version: Dynamischen Bereich zum Auslesen Max Wert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Servus Miteinander,

Habe zu meinem gestrigen Problem Maxwert aus bestimmten Bereich weiter versucht eine Lösung zu finden siehe Code 
was aber leider zu keinem Erfolg führte 
[attachment=11810]

Wenn bei diesem Code statt der Zeile "TagesSiegerDreiPunkte = Application.WorksheetFunction.Max©"
                               c.Interior.colorindex =4 
werden mir die drei in diesem Fall Relevanten Werte Markiert
bei der Worksheet Funktion Passiert gar nix

Vielleicht kann mir jemand weiterhelfen die Mappe füge ich zum besserem Verständnis nochmals an

Danke und einen schönen Sonntag

Habe noch einen erfolglosen Code Versuch angehängt klappt leider auch nicht
Code:
                                         For Spalte3 = 9 To 29 Step 4
                      Set Bereich = .Cells(30, Spalte3)
                     
                      If .Cells(30, Spalte3 + 2) = AktuelleMaxSpieltagPunkte _
                                And .Cells(31, Spalte3 + 2) = AktuelleMaxTrefferPunkte Then
                                   SiegerDreier = Application.WorksheetFunction.Max(Bereich)
                      End If
                     
                      With Bereich
                      
                        Set c = .Find(SiegerDreier, LookIn:=xlValues)
                        If Not c Is Nothing Then
                            firstAddress = c.Address
                            Do
                            c.Interior.ColorIndex = 4
                               TagesSiegerDreiPunkte = Application.WorksheetFunction.Max(c)
                               .Range("AK31") = TagesSiegerDreiPunkte
                              
                                Set c = .FindNext(c)
                            Loop While Not c Is Nothing And c.Address <> firstAddress
                        End If
                      End With
                      Next Spalte3

                      For Spalte3 = 9 To 29 Step 4
                      Set Bereich = .Cells(30, Spalte3)
                     
                      If .Cells(30, Spalte3 + 2) = AktuelleMaxSpieltagPunkte _
                                And .Cells(31, Spalte3 + 2) = AktuelleMaxTrefferPunkte Then
                                   SiegerDreier = Application.WorksheetFunction.Max(Bereich)
                      End If
                     
                      With Bereich
                      
                        Set c = .Find(SiegerDreier, LookIn:=xlValues)
                        If Not c Is Nothing Then
                            firstAddress = c.Address
                            Do
                           
                            c.Interior.ColorIndex = 4
                            Set Bereich5 = .Cells(c.Row, c.Column)
                           
                               TagesSiegerDreiPunkte = Application.WorksheetFunction.Max(Bereich5)
                               .Range("AK31") = TagesSiegerDreiPunkte
                              
                                Set c = .FindNext(c)
                            Loop While Not c Is Nothing And c.Address <> firstAddress
                           
                        End If
                      End With
                      Next Spalte3
                     
Push!
Servus

was heißt Push 
sollte ich mich Falsch ausgedrückt haben dann Bitte ich um Entschuldigung 

weiß zwar nicht Warum aber Entschuldige mich Trotzdem
Hi Freddy,

alles Top!! Du hast nichts falsch gemacht.

Ralf hat durch das "Push" lediglich deinen Beitrag, auf den noch keine Antwort erfolgte, nach oben geholt, damit  er nicht so weit nach unten gerät, bis er eventuell vergessen wird.
Hallo Freddy,

wo ist denn das "gestrige" Problem und vor allem die Aufgabe genau beschrieben? In der Mappe ist kein Code und der gepostete Code hat keinen Anfang und kein Ende ...
Guten Morgen,

Nach dem Hinweis von schauan  habe ich mein Max Problem nochmals Überdacht 
Ich habe die Mappe vereinfacht vielleicht kann man dann mein Anliegen besser verstehen
habe auch den mir wichtigen Code in die Mappe eingebracht

[attachment=11921]

So nun zum Problem: In dem Tabellenblatt Spieltag 1+2 sind die drei werte Grün Markiert um die es mir geht
ich möchte gerne den größten Wert ermitteln diese werte können jedesmal anders aufgeteilt sein 

mit dem Code welchen ich im Tabellenblatt eingefügt habe bekomme ich immer nur den letzten Wert in Zelle "AC12" ausgelesen
und nicht wie in diesem Fall den Wert aus Zelle "Y12"

Wie in diesem Fall hat den Größten Wert Manfred und die kleineren Werte haben Wolfgang und Erich aber diese Werte können Natürlich auch die Anderen Mitspieler haben somit
Bräuchte ich diesen Bereich Flexibel 

 SiegerDreier = Application.WorksheetFunction.Max(Bereich4)
                                  .Cells(13, 37) = SiegerDreier


dieser Versuch funktioniert Leider nicht es ist nur Merkwürdig dass die Werte Farblich markiert werden aber die Worksheetsfunktion Max nicht funktioniert

Ich hoffe dass ich mein Problem richtig erklären konnte 
Einen schönen Sonntag 
Code:
Sub TagesSieger()
With ActiveSheet

                 For Spalte2 = 9 To 29 Step 4
                 
.Cells(12, Spalte2).Interior.ColorIndex = 2
.Cells(12, Spalte2 + 2).Interior.ColorIndex = 2

                 AktuelleMaxSpieltagPunkte = Application.WorksheetFunction.Max(.Range("K12,O12,S12,W12,AA12,AE12"))
                                             .Cells(9, 37) = AktuelleMaxSpieltagPunkte
                                             
                 AktuelleMaxTrefferPunkte = Application.WorksheetFunction.Max(.Range("K13,O13,S13,W13,AA13,AE13"))
                                             .Cells(2, 37) = AktuelleMaxTrefferPunkte
                                             
If .Cells(12, Spalte2 + 2) = AktuelleMaxSpieltagPunkte _
                         And .Cells(13, Spalte2 + 2) = AktuelleMaxTrefferPunkte Then
                                             .Cells(12, Spalte2 + 2).Interior.ColorIndex = 5
End If
                                             
                                             
If .Cells(12, Spalte2 + 2) = AktuelleMaxSpieltagPunkte _
                         And .Cells(13, Spalte2 + 2) = AktuelleMaxTrefferPunkte Then
                         
                      Set Bereich = .Cells(12, Spalte2)
                      Set BESTADR = Bereich
                     
                      .Cells(12, BESTADR.Column).Interior.ColorIndex = 4
                     
                      Set Bereich4 = .Cells(12, BESTADR.Column)
                      Set BESTADR2 = Bereich4
                     
                                   SiegerDreier = Application.WorksheetFunction.Max(Bereich4)
                                  .Cells(13, 37) = SiegerDreier
                                 
                      End If
                      Next Spalte2
                      End With
End Sub
Hallo Excel Freunde

Noch ein Nachtrag zu Dynamischen Bereich 

Wie kann man die Zell Adresse der drei Grün Gefärbten Zellen ermitteln denn wenn das funktionieren würde denke ich
Wäre das Problem Max im Dynamischen Bereich vermutlich gelöst 

Da ich die Zellen welche Relevant sind Markieren kann muss es doch die Möglichkeit geben diese als Bereich zu definieren
Weis nur nicht wie

Danke
Hallo Freddy,

was heißt denn
Zitat:aber die Worksheetsfunktion Max nicht funktioniert
Kommt was, kommt nix, kommt ein Fehler?

Mit diesem code
Code:
Set Bereich4 = .Cells(12, BESTADR.Column)

hat Dein Bereich nur eine Zelle. Wenn Du nun das Maximum einer Zelle ausgibst, wird es mit mehr als nahezu 100%iger Wahrscheinlichkeit der Zellinhalt sein Smile Andererseits, wenn die 1 und 2 grün ist, könnte es in den betroffenen Zellen auch ein Minimum sein.

Allerdings weiß ich nun nicht, warum I12 nicht auch grün markiert ist ... Ist ja zumindest in der Zeile das Gleiche wie Y12.

Im Prinzip kannst Du auch direkt mit WENN arbeiten, es sind ja nur wenige Zellen. =WENN(ODER(I12=1;I12=2;M12=1;M12=2);...;...) oder etwas in der Art. Lässt sich ja auch im VBA nachbilden.
Servus Andre,

Ok nun weiß ich schon mal das 
Set Bereich4 = .Cells(12, BESTADR.Column)
mir nur eine Zelle als Bereich ausgibt.

I12 ist deshalb nicht Markiert weil der Wert eine Zeile Unter dem großen Wert 11 nur 5 ist und damit kleiner ist als bei den Grün Markierten
deshalb nutzt mir das =WENN(ODER(I12=1;I12=2;M12=1;M12=2);...;...) nichts weil bei einer Anderen Konstellation dann ganz andre Zellen 
betroffen sind was man nicht voraus Planen kann
Wie ich ja schon nachgetragen habe.

Ich habe sechs Mitspieler wenn dann drei oder zwei oder auch vier von den Mitspielern die Gleichen Punkte in dem Fall 11 und die gleichen Treffer
in diesem Fall 6 "O12 und O13" "AA12 und AA13" "AE12 und AE13" dann entscheiden den Tagessieger die meist erzielten Drei Punkte
diese sind dann in "M12" "Y12" und "AC12" und da bräuchte ich den größten Wert und dadurch das dies an jedem Spieltag anders ist
muß der Bereich einfach Flexibel sein da es auch zwei vier oder fünf solche Fälle geben könnte!

Ich hoffe das ich das ganze einigermaßen Verständlich erklären konnte

                                                                                             
Servus 

so geht es

Code:
                     
                       Application.Volatile
                       intSiegerDreier = 0
                       .Cells(30, Spalte2 + 3).ClearContents
                       
                           Set rngBereich = .Range("I30,M30,Q30,U30,Y30,AC30")
                           
                               For Each rngZelle In rngBereich
                                 If rngZelle.Interior.ColorIndex = 4 Then
                                   If IsNumeric(rngZelle) = True Then
                             
                             If rngZelle.Value > intSiegerDreier Then intSiegerDreier = rngZelle.Value
                             
                           End If
                         End If
                       Next rngZelle
                       
                      .Cells(31, 37) = intSiegerDreier
                       
                       If Not .Cells(30, Spalte2) = intSiegerDreier Then
                                      .Cells(30, Spalte2 + 3) = "V"
                                      .Cells(30, Spalte2 + 2).Interior.ColorIndex = FarbeVerlierer
                                      .Cells(30, Spalte2 + 2).Font.ColorIndex = 1
                       
                       ElseIf .Cells(30, Spalte2 + 2) = AktuelleMaxSpieltagPunkte _
                                    And .Cells(31, Spalte2 + 2) = AktuelleMaxTrefferPunkte _
                                    And .Cells(30, Spalte2) = intSiegerDreier Then
                                   .Cells(30, Spalte2 + 3) = "G"
                       .Cells(30, Spalte2 + 2).Interior.ColorIndex = FarbeLosGewinner
                       
                       End If
                                             
Seiten: 1 2