Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1024to1028
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
Doppelte Werte markieren
22.11.2008 13:23:06
Markus
Hallo zusammen,
ich benutze folgendes Makro,um doppelte Werte zu markieren.

Sub zellen_mit_doppelten_einträgen_markieren()
On Error GoTo Fehlerbehandlung
Dim Spalten As Object
Dim zelle1 As Object
Dim zelle2 As Object
Dim f As Integer
Dim eing
f = 0
Set zelle1 = Selection.SpecialCells(xlLastCell).Offset(1, 1)
Set zelle2 = Selection.SpecialCells(xlLastCell)
Set Spalten = ActiveCell.CurrentRegion
eing = InputBox("Die Zelle eingeben, ab der geprüft werden soll," & (Chr(13)) & "z.B. A1 oder   _
_
F6.", "Zellenauswahl")
Range(eing).Select
eing = ""
Application.ScreenUpdating = False
zelle1 = ActiveCell
ActiveCell.Offset(1).Select
For x = 1 To Spalten.Rows.Count
If ActiveCell.Value = zelle1 Then
If ActiveCell  "" Then
ActiveCell.Interior.ColorIndex = 43
End If
End If
ActiveCell.Offset(1).Select
Next x
For i = 1 To Spalten.Rows.Count - 1
For z = 1 To Spalten.Rows.Count
ActiveCell.Offset(-1).Select
Next z
f = f + 1
zelle1.Clear
zelle2 = ActiveCell
ActiveCell.Offset(1).Select
For y = 1 To Spalten.Rows.Count
If ActiveCell.Value = zelle2 Then
If ActiveCell  "" And Selection.Interior.ColorIndex = xlNone Then
ActiveCell.Interior.ColorIndex = 43 + f
End If
End If
ActiveCell.Offset(1).Select
Next y
Next i
zelle2.Clear
Application.ScreenUpdating = True
Range("A1").Select
Fehlerbehandlung:
If Err = 1004 Then
MsgBox "Es wurde keine Zelle angegeben!", , "Fehler 1004"
Else
MsgBox Error(Err)
End If
End Sub


Bei diesem Makro wird allerdings immer erst der zweite Wert farbig markiert. Beisipiel:
5 keine Farbe
6 keine Farbe
5 Farbe
Es müsste aber auch die erste 5 mit der gleichen Farbe markiert werden.
Wie muss ich das anstellen? Vielen Dank!
Viele Grüße
Markus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Werte markieren
22.11.2008 13:44:00
robert
hallo,
der erste suchbegriff ist ja noch nicht doppelt, daher keine farbe
gruß
rofu
AW: Doppelte Werte markieren
22.11.2008 13:45:00
Uwe
Hi Markus,
ich habe mich jetzt nicht in Dein Makro vertieft, aber wenn es wirklich nur doppelte Werte markiert, erreichst Du das auch mit einer bedingten Formatierung. Spalte A markieren, bedingte Formartierung, Formel ist:

=ZÄHLENWENN($A:$A;$A1)>1


Vielleicht ist das ja eine Lösung für Dich?
Gruß
Uwe
(:o)

AW: Doppelte Werte markieren
22.11.2008 13:57:48
Markus
Hallo Uwe,
bedingte Formatierung scheidet hier aus, da ich die farbige Zellen später in ein anderes Tabellenblatt kopieren muss und bei einer bedingten Formatierung klappt dieses Makro dann nicht mehr (es sind ja auch nicht die einzigen farbigen Zellen, so dass ich hier auf keinen Fall abweichen kann).
Hallo Robert,
Dich habe ich ehrlich gesagt nicht verstanden. Was muss ich denn ändern?
Viele Grüße
Markus
Anzeige
AW: Doppelte Werte markieren
22.11.2008 14:08:00
robert
hallo markus,
du musst nichts ändern:
die logik: du willst doppelte markieren-ok
der erste gefundene begriff ist ja noch nicht doppelt,
sondern erst der zweite, dritte usw....
klar?
gruß
rofu
AW: Doppelte Werte markieren
22.11.2008 14:15:41
Markus
Jetzt geschnallt. :-)
Ich muss aber beide Zellen farbig markieren, damit beide vor der eigentlichen Bearbeitung in ein anderes Tabellenblatt kopiert werden. Sonst kopiere ich nur den einen und den anderen bearbeite. Das wäre sehr schlecht.
Hat jemand eine Idee?
AW: Doppelte Werte markieren
22.11.2008 14:25:48
Daniel
Hi
erstmal 2 Grundstatzfehler, die du bereinigen solltest, bevor du hier weitermachst:
- du arbeitest nicht mit Option Explicit und die Variablen i, x,y,z sind nicht dimensioniert.
hierzu bitte das hier lesen: http://www.online-excel.de/excel/singsel_vba.php?f=4
- du arbeitest mit SELECT und ACTIVATE, auch das ist subotimal und macht den Code langsam und schwerer zu lesen, hierzu bitte das hier lesen: http://www.online-excel.de/excel/singsel_vba.php?f=78
des weiteren kannst du die Prüfung doch einfach über die Bedingte Formatierung erledigen, dh _ wenn du die Spalte A auf doppelte überprüfen willst, dann gibtst du unter FORMAT-BEDINGTE FORMATIERUNG-FORMEL folgendes ein:

=ZählenWenn(A:A;A1)>1


ein Makro dazu würde so aussehen (angepasst an deine Bedingungen mit Eingabe der Startzelle):


Sub Doppelte_Markieren()
Dim Eingabe As String
Dim Zelle As Range
Dim FormelText As String
Dim Bereich As Range
'--- Startzelle auswählen
Eingabe = InputBox("Die Zelle eingeben, ab der geprüft werden soll," & (Chr(13)) & "z.B. A1  _
oder F6.", "Zellenauswahl")
On Error Resume Next
Set Zelle = Range(Eingabe)
If Err = 0 Then
On Error GoTo 0
'--- Bereich definieren, der geprüft werden soll (alle Zellen unterhalb der Startzelle)
Set Bereich = Range(Zelle, Cells(Rows.Count, Zelle.Column).End(xlUp))
'--- Formeltext für Bedingte Formatierung
FormelText = "=Zählenwenn(" & Bereich.Address(1, 1, xlR1C1) & ";" & Zelle.Address(0, 0,  _
xlR1C1) & ")>1"
FormelText = Replace(FormelText, "R", "Z") 'Englische Zelladdrssen eindeutschen
FormelText = Replace(FormelText, "C", "S")
'--- Bedingte Formatierung eintragen
With Bereich
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:=FormelText
.FormatConditions(1).Interior.ColorIndex = 3
End With
Else
'--- Fehlermeldung
MsgBox "Die Zelladdresse wurde nicht richtig eingegeben"
End If
End Sub


Gruß Daniel

Anzeige
AW: Doppelte Werte markieren
22.11.2008 14:54:00
Markus
Vielen Dank!
AW: Doppelte Werte markieren
22.11.2008 15:04:00
Markus
Hallo Daniel,
danke für die Tipps und Ratschläge - auch für das Makro. Hast Du denn auch eine Idee, wie man ohne bedingte Formatierung hinbekommt? Wie gesagt, Farben durch bedingte Formatierung erkennt das rauskopier-Makro nicht. Die Werte sollten daher über den Interior.ColorIndex markiert werden.
AW: Doppelte Werte markieren
22.11.2008 15:22:00
Claudia
Hier eine Lösung:

Sub markiereDoppelte()
Dim rng As Range
Dim bereich As Range
Set bereich = Range("a1:a100")   'Bereich der durchsucht wird
For Each rng In bereich
If Application.CountIf(bereich, rng) > 1 Then _
rng.Interior.ColorIndex = 6
Next
End Sub


Anzeige
AW: Doppelte Werte markieren
22.11.2008 15:35:00
Daniel
Hi
wenn du die Markierung für ein Makro brauchst, dann würde ich einfach eine Hilfsspalte mit der Formel:
"=ZählenWenn(A:A;A1)" einfügen, dann kannst du die Doppelten Werte mit dem Autofilter filtern und die angezeigten Werte in ein neues Tabellenblatt kopieren.
Das dürfte einfacher und schneller gehen als mit einer Schleife die Werte einzeln zu färben und dann mit einer 2. Schleife zu kopieren.
Gruß, Daniel

195 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige