Kennzeichnung gestrichener Ergebnisse in einer "intelligenten" Wettkampftabelle
#21
(18.08.2016, 09:01)Bödefeld schrieb: Hallo,
bei Ralf scheint etwas dazwischen gekommen zu sein (hoffentlich nichts schlimmes), weil er sich nicht mehr gemeldet hat.
Nö, nix Schlimmes, momentan nur sehr viel Arbeit, die es mir im Umkehrschluss ermöglicht, hier demnächst wieder "meinen Senf dazugeben zu können".  :19:

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#22
Hallo Bernd,
dazu gibt es sogenannte Ereignisprozeduren oder -Makros. Im Codemodul des Tabellenblattes kannst Du z.B. das Worksheet_Change nehmen und darin das nur_4 aufrufen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#23
Hi Bernd,

(18.08.2016, 13:23)Bödefeld schrieb: Das Problem mit dem automatischen Start des Scripts konnte ich selbst lösen.
Nun wird nach jeder Änderung im Tabellenblatt das Makro "nur_4" - abgerufen.
Habe noch ein paar kleine Änderungen vorgenommen, damit man das gestrichene Ergebnis besser lesen kann.
Habe die fertige Tabelle hier nochmals angehangen.

so klappt es:
Sub Nur_4()
   lr = Cells(Rows.Count, "B").End(xlUp).Row
   
   With Range("E4:K" & lr)
      .Borders(xlDiagonalUp).LineStyle = xlNone
      .Borders(xlDiagonalDown).LineStyle = xlNone
      .Interior.ColorIndex = xlNone
   End With
   
   For i = 4 To lr
      Anz = WorksheetFunction.Count(Range(Cells(i, "E"), Cells(i, "K")))
      If Anz > 4 Then
         For j = 1 To Anz - 4
            M = WorksheetFunction.Small(Range(Cells(i, "E"), Cells(i, "K")), j)
            Sp = WorksheetFunction.Match(M, Range(Cells(i, "E"), Cells(i, "K")), 0)
            Debug.Print i & ": Small: ", M, "Spalte: " & Sp
            Cells(i, 4 + Sp).Interior.ColorIndex = 19
            Cells(i, 4 + Sp).Font.Strikethrough = True
            
            With Cells(i, 4 + Sp)
               .Borders(xlDiagonalUp).LineStyle = xlContinuous
               .Borders(xlDiagonalUp).Color = -16776961
               .Borders(xlDiagonalUp).TintAndShade = 0
               .Borders(xlDiagonalUp).Weight = xlThin
               .Borders(xlDiagonalDown).LineStyle = xlContinuous
               .Borders(xlDiagonalDown).Color = -16776961
               .Borders(xlDiagonalDown).TintAndShade = 0
               .Borders(xlDiagonalDown).Weight = xlThin
            End With
         Next j
      End If
   Next i
End Sub
Top
#24
Hallo

Danke schauan. Auf diese Lösung war ich mittlerweile auch gestoßen.

An dem Script fehlen noch zwei Sachen:

1. Vor jedem Start von "nur_4" müssen alle Diagonalen gelöscht werden, da sie sonst bei Änderungen in den einzelnen Ergebnissen stehenbleiben.
Dafür habe ich folgende Lösung gefunden:

  With Range("E:K")
      .Borders(xlDiagonalDown).LineStyle = xlLineStyleNone
      .Borders(xlDiagonalUp).LineStyle = xlLineStyleNone
  End With


wobei mir die Bereichsfestlegung ("E:K") nicht gefällt.
Da es eine intelligente Tabelle mit variabler Zeilenzahl ist, müsste man die Adresse der letzten Zeile ermitteln:

  Public Sub letzte_zeile()
      letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  End Sub


Aber wie ich das in Range bekomme, habe ich noch nicht herausbekommen.
Hier könnte ich Hilfe gebrauchen.


2. Die Tabelle hat wechselnd eingefärbte Zeilen.
Vor jedem Start von "nur_4" müsste die Füllfarbe der zuvor einmal gelb gefüllten (gestrichenen) Felder wieder "zurückgesetzt" werden, damit sie wieder die ursprüngliche Füllfarbe bekommen.
Damit das Script auch für andersfarbige Tabellen benutzt werden kann und verschiebbar bleibt, müsste man wohl zuerst die Farben der ersten zwei Zeilen unter der Überschrift der Spalte 1 ermitteln, denn die verändern sich nicht.
Die Tabelle müsste dann nach gelben Feldern durchsucht und je nach Zeile die entsprechende Füllfarbe übertragen werden.
Eine anderer Ansatz wäre vielleicht, einfach alle Felder entsprechend einzufärben.

Aber das ist jedoch noch drei Nummer zu groß für mich.
Deshalb hätte ich zur Lösung der beiden Sachen gern noch einmal eure Unterstützung gehabt.

Zur Erklärung habe ich den aktuellen Stand der Tabelle hochgeladen.

Viele Grüße
Bernd


Angehängte Dateien
.xls   Ergebnisliste.xls (Größe: 66 KB / Downloads: 1)
Top
#25
Hi Bernd,

(19.08.2016, 10:15)Bödefeld schrieb: Da es eine intelligente Tabelle mit variabler Zeilenzahl ist, müsste man die Adresse der letzten Zeile ermitteln:
[...]
2. Die Tabelle hat wechselnd eingefärbte Zeilen.
Vor jedem Start von "nur_4" müsste die Füllfarbe der zuvor einmal gelb gefüllten (gestrichenen) Felder wieder "zurückgesetzt" werden, damit sie wieder die ursprüngliche Füllfarbe bekommen.
Damit das Script auch für andersfarbige Tabellen benutzt werden kann und verschiebbar bleibt, müsste man wohl zuerst die Farben der ersten zwei Zeilen unter der Überschrift der Spalte 1 ermitteln, denn die verändern sich nicht.

das mit der letzte Zeile hast Du ja schon im Makro drin: Variable lr

da es eine intelligente Tabelle ist, muß die Farbe nicht gesichert werden, denn die wechselnde Farbe ist im Layout der intelligenten Tabelle enthalten und wenn die Zellfarbe auf nix gesetzt (gelöscht) wird, ist es wieder wechselnd gefärbt.

Schau Dir mal mein Makro an, das ist fast gleich mit Deinem, nur die Beschränkung des Bereiches und die Zeile mit der Zellfarbe ist dort drin.
Top
#26
Hallo Ralf,

danke, aber ich war mal wieder zu langsam.
Deine Lösung berücksichtigt aber leider die beiden Probleme aus meiner vorhergehenden Antwort nicht.
Die gefärbten Felder und die Diagonalen bleiben bei Änderungen in der Liste stehen.
Eine Teillösung habe ich, siehe meine vorhergehende Antwort.

Gruß
Bernd
Top
#27
Moin Bernd!
Du hast da ja eine ausgeblendete Hilfsspalte in der Tabelle, die ja nicht (mehr) benötigt wird.
Wenn Du sie löscht, ermittelst Du den (für Zeilen und auch Spalten dynamischen) Bereich E:"letzterWettkampf" folgendermaßen.

Sub RPP()
Dim Challenge As Range
With Tabelle1.Range("Tabelle1")
   Set Challenge = Range(.Columns(5), .Columns(.Columns.Count - 2))
End With
Debug.Print Challenge.Address
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#28
(19.08.2016, 10:25)Bödefeld schrieb: danke, aber ich war mal wieder zu langsam.
Deine Lösung berücksichtigt aber leider die beiden Probleme aus meiner vorhergehenden Antwort nicht.
Die gefärbten Felder und die Diagonalen bleiben bei Änderungen in der Liste stehen.
Eine Teillösung habe ich, siehe meine vorhergehende Antwort.

wieso? Das gerade eben (10:08 / 10:15 Uhr) gepostete Makro macht doch genau die Löschung von Farbe und Diagonalen.

Vermutlich hast Du die Forums-Anzeige nicht aktualisiert, es gab um 10:15 Uhr nochmal eine Änderung im Beitrag.
Top
#29
Hallo,

Du hast recht, Ralf "Rabe". Ich hatte das Problem, dass ich mit zwei Rälfen ("Rabe" und "RPP63") korrespondiert habe, ohne es zu bemerken.
Da war ich mit der Korrektur meines Scriptes total durcheinandergekommen.

Jetzt ist alles paletti!
Ich habe nur noch das "Strikethrough" ausgeblendet, denn das wird nicht rückgängig gemacht und ist eigentlich auch nicht mehr notwendig.

Vielen Dank nochmals an alle, die mir geholfen haben.

Hier noch die fertige Tabelle für alle, die etwas damit anfangen können

Viele Grüße und ein schönes Wochenende
Bernd


Angehängte Dateien
.xls   Ergebnisliste.xls (Größe: 66,5 KB / Downloads: 4)
Top
#30
Hi Bernd,

(19.08.2016, 10:46)Bödefeld schrieb: Hier noch die fertige Tabelle für alle, die etwas damit anfangen können

jetzt könntest Du noch für die Anzahl2-Formel in Zeile 2 den Bereich auf die Länge der intelligenten Tabelle (iT) anpassen:
Formel in Zelle E2 mit Taste F2 öffnen, dann den Formel-Bereich E4:E525 markieren, dann mit der Maus in die Kopfzeile der iT gehen, bis der Cursor zum Pfeil nach unten wird, dann klicken.
Das mußt Du komischerweise in jeder Spalte E bis K machen, Formel nach rechts ziehen reicht nicht.

Wenn dann unten eine neue Zeile dazukommt, weil ein neuer Wettkämpfer teilnimmt, dann wird der Bereich in der Formel automatisch angepasst!
   
Top


Gehe zu:


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