Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
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

Doppelungen per Zeile markieren - Excel VBA

Doppelungen per Zeile markieren - Excel VBA
22.11.2023 05:22:47
Andreas Vaitl
Hallo liebe Excel-Pro´s,

in angefügtem Excel befinden sich in Spalte I-M Arbeitspakete, welche von unterschiedlichen Leuten (Zellwerte sind die Initialen der Personen) bearbeitet werden.
https://www.herber.de/bbs/user/164499.xlsm

Damit keiner 2 Arbeitspakete an einem Tag bekommt, soll markiert werden, wenn eine Person 2 Pakete an einem Tag hat (z. B. hat PG am 2.1.2024 Packet 1 und 3, was nicht sein sollte). Außerdem sollten die die Personen markiert werden, wenn die Person ein Packet bekommen hat, aber an dem Tag im Urlaub oder Gleittag hat (Spalte C-G, Uraub ist U, Gleittag ist G; zum Beispiel hat AV am 3.1. Gleittag, müsste aber trotzdem in Packet 2 mitarbeiten).

Ich hab es auf zwei Methoden versucht (siehe Quellcode), scheitere aber daran, dass er bei CountIf meckert...

Könnt Ihr helfen? :-)

Vielen Dank und viele Grüße
Andi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelungen per Zeile markieren - Excel VBA
22.11.2023 05:34:54
Andreas Vaitl
Hier hab ich nochmals meinen Quellcode (Versuch 1 und 2), bin mir nicht sicher, ob das im Anhang ersichtlich ist:

Sub DoppelteWerteMarkieren()

Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngZeileMax As Long
Dim lngSpalteMax As Long
Dim lngZeileMin As Long
Dim lngSpalteMin As Long
Dim Bereich As Range


With Tabelle1 'mit Tabelle 1

lngZeileMax = .UsedRange.Rows.Count 'liest letzte benutzte Spalte in Variable ZeileMax ein
lngSpalteMax = .UsedRange.Columns.Count 'liest letzte benutzte Spalte in Variable SpalteMax ein
lngZeileMin = 7
lngSpalteMin = 9

For lngSpalte = lngSpalteMin To lngSpalteMax 'Beginn Spaltenloop (von Spalte 9 zu letzer benutzter Zeile)
For lngZeile = lngZeileMin To lngZeileMax 'Beginn Zeilenloop (von Zeile 7 zu letzter Zeile

Set Bereich = Range(Cells(lngZeile, lngSpalteMin), Cells(lngZeile, lngSpalteMax))

If .Application.WorksheetFunction.CountIf(Bereich).Value > 1 Then
.Bereich.Interior.ColorIndex = 4
Else
.Bereich.Interior.colorindes = xlColorIndexNone
End If

Next lngZeile 'nächster Zeilenloop
Next lngSpalte 'nächster Spaltenloop

End With 'End With


End Sub



Sub DoppelteWerteMarkierenVersuch2()


Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngZeileMax As Long
Dim lngSpalteMax As Long
Dim lngZeileMin As Long
Dim lngSpalteMin As Long
Dim Bereich As Range

With Tabelle1 'mit Tabelle 1

lngZeileMax = .UsedRange.Rows.Count 'liest letzte benutzte Spalte in Variable ZeileMax ein
lngSpalteMax = .UsedRange.Columns.Count 'liest letzte benutzte Spalte in Variable SpalteMax ein
lngZeileMin = 7
lngSpalteMin = 9

For lngZeile = lngZeileMin To lngZeileMax

Set Bereich = Range(Cells(lngZeile, lngSpalteMin), Cells(lngZeile, lngSpalteMax))
With .Range(Bereich)
.FormatConditions.Delete
.FormatConditions.AddUniqueValues
.FormatConditions(1).DupeUnique = xlDublicate
.formatcontions(1).Interior.Color = vbYellow
End With

Next lngZeile

End With

End Sub
Anzeige
AW: Doppelungen per Zeile markieren - Excel VBA
22.11.2023 08:36:35
hary
Moin
Sind mehrere Schnitzer drin.
Bei Countif fehlt was gezaehlt werden soll.
Habe deinen Code verwendet/ergaenzt.
Probier mal und vergleiche die Codes.
Sub DoppelteWerteMarkieren()


Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngZeileMax As Long
Dim lngSpalteMax As Long
Dim lngZeileMin As Long
Dim lngSpalteMin As Long
Dim Bereich As Range
Dim a As Variant

With Tabelle1 'mit Tabelle 1

lngZeileMax = .UsedRange.Rows.Count 'liest letzte benutzte Spalte in Variable ZeileMax ein
lngSpalteMax = .UsedRange.Columns.Count 'liest letzte benutzte Spalte in Variable SpalteMax ein
lngZeileMin = 7
lngSpalteMin = 9

For lngSpalte = lngSpalteMin To lngSpalteMax 'Beginn Spaltenloop (von Spalte 9 zu letzer benutzter Zeile)
For lngZeile = lngZeileMin To lngZeileMax 'Beginn Zeilenloop (von Zeile 7 zu letzter Zeile

Set Bereich = .Range(.Cells(lngZeile, lngSpalteMin), .Cells(lngZeile, lngSpalteMax))

If Application.WorksheetFunction.CountIf(Bereich, Cells(lngZeile, lngSpalte)) > 1 Then
.Cells(lngZeile, lngSpalte).Interior.ColorIndex = 4
Else
.Cells(lngZeile, lngSpalte).Interior.ColorIndex = xlColorIndexNone
End If
'-----wenn in Abwesend etwas steht-----
a = Application.Match(.Cells(lngZeile, lngSpalte), Range("C6:G6"), 0)
If IsNumeric(a) Then
If .Cells(lngZeile, a + 2) > "" Then .Cells(lngZeile, lngSpalte).Interior.ColorIndex = 3
End If
'--------------------------------------

Next lngZeile 'nächster Zeilenloop
Next lngSpalte 'nächster Spaltenloop

End With 'End With


End Sub

gruss hary
Anzeige
AW: Doppelungen per Zeile markieren - Excel VBA
22.11.2023 08:53:40
daniel
Hi
muss es VBA sein?
du kannst die Markierung auch über die bedingte Formatierung erstellen.
richte hierfür für den Bereich I7:M7 zwei bedingte Formatierungen mit folgenden Regeln ein:
1. Doppelte Beauftragung: =ZÄHLENWENN($I7:$M7;I7)&gt1
2. Gleit- oder Urlaubstag: =INDEX($C7:$G7;1;VERGLEICH(I7;$C$6:$G$6;0))&lt&gt""

Gruß Daniel
AW: Doppelungen per Zeile markieren - Excel VBA
22.11.2023 08:56:32
MCO
... und hier noch die Switter-Lösung, die bei dir auch nicht klappte:

Bedingte formatierung per VBA eingefügt
Sub DoppelteWerteMarkieren2()


Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngZeileMax As Long
Dim lngSpalteMax As Long
Dim lngZeileMin As Long
Dim lngSpalteMin As Long
Dim Bereich As Range

With Sheets("Tabelle1")

lngZeileMax = .UsedRange.Rows.Count 'liest letzte benutzte Spalte in Variable ZeileMax ein
lngSpalteMax = .UsedRange.Columns.Count 'liest letzte benutzte Spalte in Variable SpalteMax ein
lngZeileMin = 7
lngSpalteMin = 9

For lngZeile = lngZeileMin To lngZeileMax

Set Bereich = Range(Cells(lngZeile, lngSpalteMin), Cells(lngZeile, lngSpalteMax))
With Bereich
.FormatConditions.Delete
.FormatConditions.AddUniqueValues
.FormatConditions(1).DupeUnique = xlDuplicate
.FormatConditions(1).Interior.Color = vbYellow
End With
Next lngZeile
End With
End Sub


Gruß, MCO
Anzeige
AW: Doppelungen per Zeile markieren - Excel VBA
22.11.2023 10:00:38
Andreas Vaitl
vielen Dank für die schnelle Hilfe und den Support, werde ich gleich heute Abend testen. Melde mich falls noch fragen sind. Dank Euch nochmals recht herzlich! VG, Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige