Anzeige
Archiv - Navigation
1748to1752
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
Inhaltsverzeichnis

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

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
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
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?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige