Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
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
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

MaximalerWert wenn andere Spalten = True

MaximalerWert wenn andere Spalten = True
05.06.2004 12:08:45
Peter
Hallo Ihr Lieben,
Der nachstehende Code ist nicht so ganz ernst zu nehmen....er dient eher als Beschreibung meiner Problematik.....in Worten kurz so:
wenn WertSpalte13 = M und WertSpalte15 = E dann färbe die Zeile mit dem höchsten Wert in Spalte13 von Spalte2 bis 5 gelb ein......

Sub Farbe2()
Dim iZeile As Long
For iZeile = 1 To 100
With Sheets("WKHindernislauf")
A = Sheets("WKHindernislauf").Cells(iZeile, 13).Value = "M"
B = Sheets("WKHindernislauf").Cells(iZeile, 15).Value = "E"
If A = True And B = True Then
Cells(iZeile, 13).Find(What:=MaximumValue).Row
.Range(Cells(n, 2), Cells(n, 4)).Interior.ColorIndex = 6
End If
End With
Next iZeile
End Sub

Ich erbitte Eure fachliche Hilfe
Danke
Peter S.

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fehlerteufel hatte sich eingeschlichen....
05.06.2004 12:29:18
Peter
es soll natürlich dann die Zeile eingefärbt werden, wo in Spalte12 der höchste Wert ist...sonst wäre es sinnlos..
Danke
Peter S.
AW: Fehlerteufel hatte sich eingeschlichen....
05.06.2004 12:30:45
Nepumuk
Hallo Peter,
ich hoffe, ich hab's richtig verstanden:


Sub Farbe2()
    Dim iZeile As Long
    With Sheets("WKHindernislauf")
        For iZeile = 1 To 100
            If .Cells(iZeile, 13).Value = "M" And .Cells(iZeile, 15).Value = "E" Then
                iZeile = .Columns(13).Find(What:=WorksheetFunction.Max(.Columns(12))).Row
                .Range(Cells(iZeile, 2), Cells(iZeile, 4)).Interior.ColorIndex = 6
                Exit For
            End If
        Next iZeile
    End With
End Sub


Gruß
Nepumuk
Anzeige
Nicht ganz..........
05.06.2004 12:41:29
Peter
Hallo Nepumuk,
lasse ich in dieser Zeile die 13 stehen bringt er mir Fehlermeldung...
iZeile = .Columns(13).Find(What:=WorksheetFunction.Max(.Columns(12))).Row
ersetze ich die 13 durch 12 dann färbt er zwar, jedoch ohne Berücksichtigung der Bedingung, dass der Wert in Spalte 13 = M sein muss und such sich lediglich den absolut höchsten Wert aus Spalte 12
Gruß
Peter S.
AW: Nicht ganz..........
05.06.2004 12:44:18
Nepumuk
Hallo Peter,
also müssen diese drei Bedingungen erfüllt sein?
Spalte 13 = M
Spalte 15 = E
Höchster Wert in Spalte 12
dann färbe.
Gruß
Nepumuk
Ja ganz genau so soll es sein...:) o.T.
05.06.2004 12:48:32
Peter
.
AW: Ja ganz genau so soll es sein...:) o.T.
05.06.2004 12:52:13
Nepumuk
Hallo Peter,
dann so:


Sub Farbe2()
    Dim iZeile As Long
    With Sheets("WKHindernislauf")
        For iZeile = 1 To 100
            If .Cells(iZeile, 13).Value = "M" And .Cells(iZeile, 15).Value = "E" And .Cells(iZeile, 12) = WorksheetFunction.Max(.Columns(12)) Then
                .Range(.Cells(iZeile, 2), .Cells(iZeile, 4)).Interior.ColorIndex = 6
                Exit For
            End If
        Next iZeile
    End With
End Sub


Gruß
Nepumuk
Anzeige
Hmm....Sorry habe was vergessen..:(
05.06.2004 13:05:14
Peter
Hallo Nepumuk,
ja so funktioniert es wenn tatsächlich der höchste Wert in Spalte12 bei 13=M und 15=E ist.....
habe aber leider vergessen zu erwähnen, dass Spalte13 = W sein kann und Spalte15=J....das bedeutet, daß praktisch 4 Zeilen gefärbt werden sollen also so:
ME + maximalerWert12 = Farbe
WE + maximalerWert12 = Farbe
MJ + maximalerWert12 = Farbe
WJ + maximalerWert12 = Farbe
verzeih mein Vergessen.....ich dachte ich kann das dann selber erweitern, aber ich denke ich brauche da doch deine Hilfe
Danke
Peter S.
AW: Hmm....Sorry habe was vergessen..:(
05.06.2004 13:19:37
Nepumuk
Hallo Peter,
so langsam nähern wir uns der Zielgerade:


Sub Farbe2()
    Dim iZeile As Long
    With Sheets("WKHindernislauf")
        For iZeile = 1 To 100
            If .Cells(iZeile, 12) = WorksheetFunction.Max(.Columns(12)) Then
                If .Cells(iZeile, 13) = "M" Or .Cells(iZeile, 13) = "W" Then
                    If .Cells(iZeile, 15) = "E" Or .Cells(iZeile, 15) = "J" Then
                        .Range(.Cells(iZeile, 2), .Cells(iZeile, 4)).Interior.ColorIndex = 6
                    End If
                End If
            End If
        Next iZeile
    End With
End Sub


Aber, so wie ich es verstanden habe, können vier Zeilen nur dann gefärbt werden, wenn der Maximalwert viermal vorkommt und die Buchstabenkombinationen stimmen.
Gruß
Nepumuk
Anzeige
Tut mir leid für deine Mühe Nepumuk
Reinhard
Mensch Peter *Riesenseufz*, hättest du das Folgende gleich mitgeteilt hätte Nepumuk das sofort lösen können :-((
Hallo Nepumuk,
Peter bezieht sich auf diese Datei: https://www.herber.de/bbs/user/7117.xls
sie ist entstanden im Threat: https://www.herber.de/forum/messages/436013.html
Ich habe es soweit entwickelt, dass immer der erste eines Blocks eingefärbt wird.
Es können bis zu 16 Blöcke entstehen. Ich mutmaße 4 Altersklassen in ME , vier in MJ usw.
Nun ist die neueste Vorgabe dass nur die Punktbesten von ME,MJ,WE, und WJ eingefärbt werden sollen.
Man muss also alle Blöcke die zu ME gehören prüfen, wer da die meisten Punkte hat, ihn färben, dann von MJ usw.
Lieben Gruß
Reinhard
Anzeige
Bin vom Hundegang zurück........
05.06.2004 15:12:14
Peter
Hallo Nepumuk und Reinhard,
hallo Ihr Beiden, ja stimmt war leider etwas ungeschickt von mir nicht auf den anderen Thread zu verweisen.......bin halt manchmal etwas trottelig......
Reinhard ich hoffe du hast den Abschluß des anderen Threads gelesen.....was ich da geschrieben habe...
Also nochmal....ja es sind diese 4 Klassen die eingefärbt werden sollen:
ME = Punkte Spalte12 = realtiverHöchstwert innerhalb ME = Farbe
WE = Punkte Spalte12 = realtiverHöchstwert innerhalb WE = Farbe
MJ = Punkte Spalte12 = realtiverHöchstwert innerhalb MJ = Farbe
WJ = Punkte Spalte12 = realtiverHöchstwert innerhalb WJ = Farbe
Sorry, dass ich durch ungenaue Angaben Verwirrung und Arbeit gestiftet habe....verspreche Besserung
Danke
Peter S.
Anzeige
Absolut Perfekt: Vielen Dank
05.06.2004 15:53:39
Peter
Hallo Reinhard und Nepomuk,
vielen vielen Dank für Eure Unterstützung........das ist die perfekte Lösung jetzt.
Viele Grüße aus Lauf bei Nürnberg
Peter S.
AW: Absolut Perfekt: Vielen Dank
05.06.2004 22:03:08
Peter
Hallo Reinhard, Nepumuk und alle,
habe ein Phänomen das mir Rätsel aufgibt....Reihard hat mir einen Code geschickt, der auch prima funzt.....ich hab die Datei um 2 Spalten erweitert und die Information die bisher in Spalte15 war ist jetzt in Spalte17....hat in der Datei von Reihard auch funktioniert.....jetzt hab ich das Modul in meine persönliche Anwendung integriert und dann kommt die Fehlermeldung

Function oder Variable erwartet.....bei Zeile "Ende = anf".....außerdem wird in meiner Anwendung automatisch aus "ende" "Ende"...in der Datei von Reinhard aber nicht?
<a href="https://www.herber.de/bbs/user/7137.xls">https://www.herber.de/bbs/user/7137.xls</a>

Sub Farbe()
Application.ScreenUpdating = False
Sheets("WKHindernislauf").Visible = True
With Sheets("WKHindernislauf")
.Range("A16:Q100").Interior.ColorIndex = xlNone
Werte = Array("ME", "MJ", "WE", "WJ")
anf = 16
For n = 0 To 3
Ende = anf
While .Cells(Ende, 13) & .Cells(Ende, 17) = Werte(n) _
Or .Cells(Ende, 13) & .Cells(Ende, 17) = "" _
And Ende <= .Range("a65536").End(xlUp).Row
Ende = Ende + 1
Wend
Ende = Ende - 1
If .Cells(anf, 13) & .Cells(anf, 17) = Werte(n) Then
For m = anf To Ende
If .Cells(m, 12) <> "" Then
pos = WorksheetFunction.Rank(.Cells(m, 12), Range(.Cells(anf, 12), _
.Cells(Ende, 12)))
If pos = 1 Then .Range(Cells(m, 2), Cells(m, 3)).Interior.ColorIndex = 6
End If
Next m
End If
anf = Ende + 1
Next n
End With
Sheets("WKHindernislauf").Visible = xlVeryHidden
Application.ScreenUpdating = True
End Sub

Ich bitte nochmals um Hilfe
Danke sehr
Peter S.
Anzeige
Immer noch Hilfe
06.06.2004 00:21:40
Peter
Hallo Reinhard,
ich begreif gar nix mehr.....in deiner Beispieldatei funzt alles bestens... und in meine Anwendung kopiert spinnt alles
z.B. Fehlermeldung bei
Set wsZiel = Worksheets.Add
bitte auch den Thread vorher ansehen
Danke Sehr
Peter S.
AW: Immer noch Hilfe
06.06.2004 12:38:49
Björn
Hallo Peter,
vermutlich hast Du in Deinem Programmcode bereits eine Prozedur namens "Ende". Deshalb ändert sich die Groß-/Kleinschreibung und deshalb kommt auch die Fehlermeldung. VBA "denkt" nämlich, dass Du mit Ende = anf die Prozedur Ende meinst und einer Prozedurbezeichnung kann man ja keinen Wert zuweisen.
Ändere also in dem Sub Farbe einfach die Variable Ende in z. B. "Ende_Daten" und es müsste funktionieren.
Gruß
Björn
Anzeige
Gefunden...hallo Reinhard, Nepumuk+Björn
07.06.2004 08:56:12
Peter
Hallo Ihr 3 und alle anderen,
manchmal tut es einfach not mal nen Tag VBA einfach VBA sein lassen und was anderes zu unternehmen....klärt die Gedanken.....zunächst mal ja Björn....genau das hatte ich...bereits ne Prozedur Sub Ende() irgendwo anders im Projekt......(hängt mit ner Uhrzeit-Prozedur zusammen)und dann hab ich nen weiteren Fehler gefunden....
Da in Reinhards Beispiel-Code die Prozedur Sub ErgebnisHindernislauf von einem Buttom aus dem Tabellenblatt heraus gestartet wird war sein Code in Zeile 7....Set wsQuelle = ActiveSheet natürlich richtig
In meiner Anwendung jedoch wird der Start von einem Button veranlasst, der auf einer anderen UF sitzt.....deshalb wurde das natürlich nichts......Ihr seht im Code....hab ActiveSheet einfach ersetzt durch Sheets("WKHindernislauf")....und schon funzt es
Sub ErgebnisHindernislauf()
Application.ScreenUpdating = False
Dim strTabellenname As String
Dim bFound As Boolean
Dim ws As Worksheet
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Set wsQuelle = Sheets("WKHindernislauf")
strTabellenname = "KopieWKHindernislauf"
For Each ws In Worksheets
If ws.Name = strTabellenname Then
bFound = True
Set wsZiel = ws
End If
Next
If Not bFound Then
Set wsZiel = Worksheets.Add
wsZiel.Name = strTabellenname
End If
wsQuelle.Range("A16:Q100").Copy
wsZiel.Range("A16:Q100").PasteSpecial Paste:=xlPasteFormats
wsZiel.Range("A16:Q100").PasteSpecial Paste:=xlPasteValues
wsZiel.Range("A16:Q100").PasteSpecial Paste:=xlPasteFormulas
Hoffe Ihr lest die Rückmeldung.....manchmal sind es halt kleine Unterschiede zwischen Simulation und Anwendung, die sich aber irre auswirken......Ein großes Danke nochmals an Euch
Peter S.
Anzeige
Erledigt oT
Udo
hh
Danke für die Rückmeldung - o. T.
07.06.2004 21:39:08
Björn

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige