Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Doppelt in einer Spalte
26.03.2006 10:59:02
Walter
Guten Morgen,
wie kriege ich das hin, das man in der Spalte rot etc. makiert wenn ein Name,
oder auch eine Nr. doppelt ist. Die Datei ist sehr groß (für meine Verhältnisse)
kann man das per Makro durchführen ?
gruß walter

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Aber als Makro...habe auch gefunden
26.03.2006 11:16:48
Walter
Hallo Boris,
Danke für die schnelle Info.
Ich habe in der Recherche folgendes Makro gefunden:
Dim rng As Range
Dim bereich As Range
Set bereich = Range("C1:C1000") 'Bereich der durchsucht wird
For Each rng In bereich
If Application.CountIf(bereich, rng) &gt 1 Then _
rng.Interior.ColorIndex = 6
Next
funktioniert auch, damit ich die Stellen finde und gegebenfalls löschen kann, kann man eine MSGBOX einbauen, die mir die Zeilen Nr. wiedergibt, noch schöner wäre z.b.
gefunden: Walter Walter in Zeile 15 und in Zeile 302.
Geht das auch ?
gruß walter
Anzeige
AW: Aber als Makro...habe auch gefunden
26.03.2006 12:09:34
Franz
Hallo Walter,
mit diesen Anpassungen wird auch eine Meldung für doppelt vorkommende Begriffe angezeigt.

Public Sub Test()
Dim rng As Range
Dim bereich As Range, Wiederholung() As Boolean
Set bereich = Range("C1:C1000") 'Bereich der durchsucht wird
ReDim Wiederholung(bereich.Row To bereich.Row + bereich.Rows.Count - 1)
For Each rng In bereich
If Application.CountIf(bereich, rng) > 1 Then
rng.Interior.ColorIndex = 6
If Wiederholung(rng.Row) = True Then GoTo NextZelle
Boxtext = "Begriff: " & rng.Value & vbLf & "gefunden in Zeilen: " & rng.Row
For I = rng.Row + 1 To bereich.Row + bereich.Rows.Count - 1
If rng.Value = bereich(I, 1) Then
Boxtext = Boxtext & ", " & I
Wiederholung(I) = True
End If
Next I
MsgBox Boxtext
End If
NextZelle:
Next rng
End Sub

Gruß
Franz
Anzeige
Danke
26.03.2006 12:11:54
Walter
Hallo Franz,
auch Dir recht herzlichen Dank, such jetzt nur noch wie die MSGBOX ausdrucken kann,
mfg walter
AW: Doppelt in einer Spalte
ransi
Hallo Walter
versuch mal:


Public Sub test()
Dim rng As Range
Dim bereich As Range
Dim dummy As String
Set bereich = Range("C1:C1000"'Bereich der durchsucht wird
For Each rng In bereich
    If Application.CountIf(bereich, rng) > 1 Then
        rng.Interior.ColorIndex = 6
        dummy = dummy & rng.Text & " --> Zeile " & rng.Row & Chr(13)
    End If
Next
MsgBox dummy
End Sub


ransi
Anzeige
stark, Ransi
26.03.2006 11:39:49
Bernd
Respekt
Super spitze
26.03.2006 11:44:10
Walter
Hallo Ransi,
das ist genau das was ich SUCHE.
Kann man jetzt die Einträge so wie die MsgBox angezeigt wird auch einfach drucken ?
Dann kann ich ja mit der Vorlage entsprechend dann die Zelle aufsuchen und löschen,
gruß walter
AW: Super spitze
ransi
Hallo
Wenn du die mehrfachen sowieso löschen willst, warum dann erst ausdrucken ?
So werden dir die mehrfachen ausgewählt.


Public Sub test()
Dim rng As Range
Dim bereich As Range
Dim dummy As String
Dim dummy_Bereich As Range
Set bereich = Range("C1:C1000"'Bereich der durchsucht wird
For Each rng In bereich
    If Application.CountIf(bereich, rng) > 1 Then
        rng.Interior.ColorIndex = 6
        If dummy_Bereich Is Nothing Then
            Set dummy_Bereich = rng
            Else
            Set dummy_Bereich = Union(dummy_Bereich, rng)
        End If
        dummy = dummy & rng.Text & " --> Zeile " & rng.Row & Chr(13)
    End If
Next
MsgBox dummy
dummy_Bereich.Select
End Sub


Löschen kannst du jetzt manuell über das kontextmenu rechte Maus.
Wenn du das wirklich ausgedruckt haben möchtest:


Public Sub drucken()
    Dim rng As Range
    Dim bereich As Range
    Dim dummy As String
    Dim neues_Blatt As Worksheet
    Dim L As Long
    Dim merkalarm As Boolean
merkalarm = Application.DisplayAlerts
L = 1
Set neues_Blatt = Worksheets.Add(after:=Sheets(Sheets.Count))
Set bereich = Range("C1:C1000"'Bereich der durchsucht wird
For Each rng In bereich
    If Application.CountIf(bereich, rng) > 1 Then
        rng.Interior.ColorIndex = 6
        neues_Blatt.Cells(L, 1) = rng.Text & " --> Zeile " & rng.Row
        L = L + 1
        dummy = dummy & rng.Text & " --> Zeile " & rng.Row & Chr(13)
    End If
Next
MsgBox dummy
Application.DisplayAlerts = False
With neues_Blatt
    .PrintOut
    .Delete
End With
Application.DisplayAlerts = merkalarm
End Sub


ransi
Anzeige
Leider nicht...
26.03.2006 12:28:49
Walter
Hallo Ransi,
kann leider nicht direkt löschen, da in der nächsten Spalte Daten drin stehen und ich mir
diese Daten erst ansehen muß.
Mit dem ausdrucken hat leider nicht geklappt.
Es wird eine Sheet erstellt, eine LEERE Msgbox kommt und es wird nichts ausgedruckt.
mfg walter
AW: Leider nicht...
ransi
Hallo Walter
Ich vermute du startest die sub jetzt aus einem Modul und befindest dich auf dem verkehrten sheet.
Änder die zeile mal so um:
Set bereich = Sheets("Tabelle1").Range("C1:C1000")
ransi
AW: Leider nicht...
26.03.2006 12:42:37
Walter
Hallo Ransi,
ich starte per Button das Makro, bisher kein Problem !
Ich brauch das ja für mehrere Sheets.
Leider auch nicht mit der Zelle ändern.
mfg walter
Anzeige
Fehler gefunden... noch eine Frage
26.03.2006 12:59:07
Walter
Hallo Ransi,
habe die Zeilen umgetauscht, funktioniert.
merkalarm = Application.DisplayAlerts
L = 1
Set bereich = ActiveSheet.Range("C1:C65000") 'Bereich der durchsucht wird &lt&lt&lt&lt&lt&lt&lt
Set neues_Blatt = Worksheets.Add(after:=Sheets(Sheets.Count)) &lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt
Da Du ja besonders gut drauf bist, darf ich noch eine Frage stellen ?
Ich möchte per Makro die gelben Makierungen wieder aufheben, Wie ?
mfg walter
AW: Fehler gefunden... noch eine Frage
26.03.2006 13:05:44
Reinhard
Hi Walter,
ungetestet:
activesheet.usedrange.cells.interior.colorindex=xlnone
wenn das nicht geht,

for each zelle in activesheet.usedrange
zelle.interior.colorindex=xlnone
next zelle

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
Nicht
26.03.2006 13:16:58
Walter
Hallo Reinhard,
leider Fehlermeldung: 1004 ColorIndex kann nicht festgelegt werden.
(ist aber kein Schutz drin)
So habe ich reingesetzt:

Sub Walter_Doppelt_Gelb_Weg()
'ActiveSheet.UsedRange.Cells.Interior.ColorIndex = xlNone
For Each Zelle In ActiveSheet.UsedRange
Zelle.Interior.ColorIndex = xlNone
Next Zelle
End Sub

Ich brauch das nur für die Spalte "C" !
gruß walter
AW: Fehler gefunden... noch eine Frage
ransi
Hallo
geht am schnellesten so:

'code
End With
Application.DisplayAlerts = merkalarm
Sheets("Tabelle1").[c:c].Interior.ColorIndex = xlNone
End Sub

Kannst du auch über eine schleife machen, dauert aber unnötig lange.
ransi
Anzeige
korrektur:
ransi
Hallo
muss natürlich in eine eigene routine:
Public Sub wieder_normal()
Sheets("Tabelle1").[c:c].Interior.ColorIndex = xlNone
End Sub

ransi
Danke und schönen Sonntag noch
26.03.2006 13:32:30
Walter
Hallo Ransi,
funktioniert alles, Super,
mfg walter
Verwandtes Problem
31.03.2006 03:52:38
Verena
Hallo zusammen,
ich stehe vor meiner ersten grossen Herausforderung in Excel: Makros!
Ich bekam eine Tabelle mit zwei Registerblaettern. In beiden Registern sind Auftragsnummer mit Kosten aufgelistet. Im Grunde sollten die beiden Register identisch sein (d.h. die eine Auftragsnummer mit Kosten xy findet sich auch wieder in der 2. Registertabelle). Das ist aber nur in der Theorie so. Denn Mitarbeiter machen Fehler bei der Eingabe von Preisen etc.
Das ist die Vorgeschichte.
Ich soll jetzt ein Makro aufzeichnen, das
1. dieselben Auftragsnummer in Spalte A z. B. findet
2. dann noch vergleicht, ob die Kosten in Spalte E z. B. identisch sind
3. dann diese Zellen automatisch rausloeschen (dabei ist egal ob sich die Daten noch getrennt voneinander in den Reg. blaettern befinden oder ob man sie bereits in eine Tabelle gebracht hat und vorsortiert.)
4. Ergebnis = es bleiben nur die Auftragsnummern = Problemfaelle mit unterschiedlichen Preisen.
Das Ding soll bald fertig sein. Momentan bin ich in Australien (Zeitverschiebung +10 Stunden) und es ist Freitag. Vielleicht hat ja jemand Zeit am WE.
Viele Gruesse und DANKE
Verena
Anzeige
AW: Verwandtes Problem
31.03.2006 04:21:20
Mustafa
Hallo Verena,
Hier mal ein Code :

Sub vergleich()
Dim i As Integer, j As Integer
Dim k As Integer, l As Integer
Dim wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets(1) 'Tabelle 1
Set wks2 = Worksheets(2) 'Tabelle 2
i = Worksheets(1).Range("A65536").End(xlUp).Row 'Benutzter Bereich Spalte a Tabelle 1
j = Worksheets(2).Range("A65536").End(xlUp).Row 'Benutzter Bereich Spalte a Tabelle 2
For k = 1 To i
For l = 1 To j
If wks1.Range("A" & k).Value = wks2.Range("A" & l).Value Then
If wks1.Range("E" & k).Value = wks2.Range("E" & l).Value Then
wks2.Range("A" & l).EntireRow.Delete
End If
End If
Next l
Next k
End Sub

Ich hoffe es tut das was du wünschst.
Rückmeldung obs hilft wäre nett.
Viele Grüße aus Köln.
Anzeige
Nachtrag: Verwandtes Problem
31.03.2006 04:23:57
Mustafa
Probiers bitte zuerst an einer Musterdatei.
Bin selbst VBA Anfänger.
Viele Grüße aus Köln.
Wieso verwandtes Problem ?
31.03.2006 08:29:05
walter
Guten Morgen Verena und die Anderen,
ich habe ein Problem mit der Zeiten-Darstellung, verstehe jetzt nicht so RECHT ?
Gruß Walter

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige