jjjt84
Goto Top

VB Script für Excel

Hi,

ich habe häufiger die Aufgabe Excel Tabellen Manuell nach doppelt vorkommenden Sachen zu durchsuchen, und das ist nervig und sehr sehr zeitaufwendig.
jetzt wollte ich fragen ob es für die Tätigkeit die ich machen muss einen automatischen Weg gibt.

Also die ersten namen die verglichen werden müssen, finden sich alle in einer Spalte (B) und stehen untereinander in verschiedenen Zeilen (können aber bis zu 20 mal untereinander stehen).
und falls dort namen stehen die gleich sind muss eine andere Spalte (g) durchsucht werden (aber nur in den Zeilen, in denen B gleich war) und geguckt werden, ob dort auch etwas doppelt ist.
und falls diese beiden sachen dann zutreffen, die zeile einfach farblich zu markieren.

ich hoffe es war verständlich, und es gibt ein lösung dafür.

vielen dank im vorraus für alle die helfen wollen.

Mfg

Content-Key: 82675

Url: https://administrator.de/contentid/82675

Printed on: April 18, 2024 at 02:04 o'clock

Member: misterdemeanor
misterdemeanor Mar 10, 2008 at 11:25:59 (UTC)
Goto Top
Grüß Dich,

kenne mich mit dem Excel-Objektmodell nicht so gut aus, und auch sonst ist das kein sehr feiner Algorithmus, sollte aber für Dein Problem sollte es reichen. Je nachdem wie viele Zeilen in der Arbeitsmappe sind kann es den Prozessor schon eine Zeit lang Voll auslasten! Wiegesagt, Programmiertechnisch kein Meisterwerk *g

Einfach in ein Modul Deiner .XLS einfügen. Ggfls. den Namen der Arbeitsmappe (wsName) anpassen und laufen lassen.

Public Function HighlightDublicates()
On Error Resume Next
  Dim colDuplicates As Collection
  Dim ws As Worksheet
  Dim wsName As String
  Dim i As Integer
  Dim j As Integer
  Dim x As Integer
  Dim intRows As Integer
  Dim actualB As String
  Dim actualG As String
  Dim thisB As String
  Dim thisG As String
    wsName = "Tabelle1"  
    Set ws = Worksheets(wsName)
    ws.Activate
    intRows = ws.Cells(Rows.Count, 1).End(xlUp).Row

  For i = 1 To intRows
    Set colDuplicates = New Collection
    actualB = ws.Range("B" & i).Value  
    actualG = ws.Range("G" & i).Value  
    colDuplicates.Add i
    For j = 1 To intRows
      thisB = ws.Range("B" & j).Value  
      thisG = ws.Range("G" & j).Value  
      If actualB = thisB Then
        If actualG = thisG Then
          colDuplicates.Add j
        End If
      End If
    Next j
    If colDuplicates.Count > 2 Then
      For x = 1 To colDuplicates.Count
        ws.Range("B" & colDuplicates(x)).Interior.ColorIndex = 3  
        ws.Range("G" & colDuplicates(x)).Interior.ColorIndex = 3  
      Next x
    End If
    Set colDuplicates = Nothing
  Next i
End Function

BG, Felix -misterdemeanor-