Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Ausreißer hervorheben

VBA: Ausreißer hervorheben
02.04.2020 09:49:54
Axel
Hallo zusammen,
toll, dass das Forum weiterhin verlässlich funktioniert.
Vielen Dank an der Stelle an alle Helfer hier!
Ich habe folgenden Code, der Ausreißer hervorhebt. Ich möchte zwei Änderungen haben, die ich nicht hinbekomme.
1.) Die Abweichung soll keine totale Zahl, sondern eine Prozentzahl sein (z.B. 5%). Das hab ich auch nicht mit einem anderen Datentypen hinbekommen (also z.B. Const limit As Variant = 5%) . Wie muss man sowas machen?
2.) Wie mache ich das, wenn der zu überprüfende Bereich vorher nicht bekannt ist?
Im Netz habe ich sowas gefunden:
With Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row)), aber da muss man sicher noch mehr zu schreiben. Ich brauche das Thema eigentlich öfter und würde das gerne grundsätzlich verstehen, wie man das macht, einen dynamischen Bereich zu identifizieren.
Sub AusreisserHervorheben()
Const limit As Integer = 5
For Each c In Worksheets("Tabelle1").Range("A1:I50").Cells
If c.Value > limit Then
'Schriftformatierung Fett, Kursiv, rot
With c.Font
.Bold = True
.Italic = True
.Color = RGB(255, 0, 0)
End With
'Oder Zelle rot einfärben
'        With c.Interior
'        .ColorIndex = 3
'        End With
End If
Next c
End Sub
Vielen Dank vorab und beste Grüße
Axel
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 5%?
02.04.2020 10:12:30
Fennek
Hallo,
auf welche Bezugsgröße sollen 5% berechnet werden:
- Mittelwert
- Abweichung vom Trend
- ...
mfg
AW: 5%?
02.04.2020 10:20:47
Axel
Hallo Fennek,
ich verstehe.
Die Zellen sind befüllt mit Prozentzahlen, nicht mit totalen Zahlen. Jede Zelle, die einen Wert größer 5% beinhaltet, soll hervorgehoben werden.
Sorry und Danke
Axel
Anzeige
AW: bedingteFormatierung
02.04.2020 10:41:30
Fennek

A1 > 0,05

AW: bedingteFormatierung
02.04.2020 10:46:14
Axel
Fennek: Ja das kenne ich, ist aber nicht die Antwort auf meine Frage(n).
Danke anyway!!!
AW: z.B. Activesheet.UsedRange
02.04.2020 10:55:25
Fennek
Falls es möglich ist den Bereich von vorneherein abzugrenzen, zB. von B2 alles nach unten und alles nach rechts:

lr = cells(rows.count,"B").end(xlup).row ' letzt Zeile der Spalte B
ls = cells(2, columns.count).end(xltoleft).column ' letzte splte
rng = range(cells(2,2), cells(lr,ls))
for each c in rng

Anzeige
AW: z.B. Activesheet.UsedRange
02.04.2020 11:00:31
Axel
Fennek, das hilft schon mal. Danke!
Hast Du auch eine Idee zu meiner ersten Frage bzgl. %-Werte in den Zellen?
Const limit As Integer = 5
wenn ich z.B. Const limit As Single = 0,05 versuche einzugeben, das wird nicht akzeptiert.
AW: z.B. Activesheet.UsedRange
02.04.2020 11:03:55
peterk
Hallo
VBA spricht Englisch!
Const limit As Single = 0.05 'Punkt statt Komma
Anzeige
AW: z.B. Activesheet.UsedRange
02.04.2020 12:15:19
Axel
Peter, vielen Dank!
AW: z.B. Activesheet.UsedRange
02.04.2020 13:03:37
Axel
Fennek, bist Du noch on?
Ich bekommen einen Laufzeitfehler 424 "Objekt erforderlich" an der Stelle
If c.Value > limit Then
Was muss da geändert werden?
Danke vorab
Axel
Sub AusreisserHervorheben()
'Konstante für den Schwellenwert deklarieren
'Const limit As Integer = 5 'Bei einer totalen Zahl
Const limit As Integer = 0.05 'Bei einer Prozentzahl (hier: 5%)
'Gesucht wird in Tabelle 1 im Bereich A1 bis I50 (ggf anpassen)
'For Each c In Worksheets("Tabelle1").Range("A1:I50").Cells
lr = Cells(Rows.Count, "B").End(xlUp).Row ' letzt Zeile der Spalte B
ls = Cells(2, Columns.Count).End(xlToLeft).Column ' letzte splte
Rng = Range(Cells(2, 2), Cells(lr, ls))
For Each c In Rng
'Wenn der Wert größer ist als in der Konstante festgelegt, dann
If c.Value > limit Then
'Schriftformatierung Fett, Kursiv, rot
With c.Font
.Bold = True
.Italic = True
.Color = RGB(255, 0, 0)
End With
'Oder Zelle rot einfärben, dann den Block Schriftformatierung auskommentieren
'        With c.Interior
'        .ColorIndex = 3
'        End With
End If
Next c
End Sub

Anzeige
AW: versuche ...
02.04.2020 13:46:35
Fennek

For Each c In Rng.cells

AW: versuche ...
02.04.2020 14:06:35
Axel
Das funktioniert leider nicht.
Aber ich habe eben gesehen, Du hast was von
Activesheet.UsedRange in der Überschrift geschrieben.
Muss das irgendwo eingesetzt werden?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige