Excel VBA: Zellen mit gleichem Inhalt in gesamter Arbeitsmappe suchen

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von surfer_01.

    Excel VBA: Zellen mit gleichem Inhalt in gesamter Arbeitsmappe suchen

    Hallo zusammen,

    ich habe folgendes Problem, bei dem ihr mir hoffentlich helfen könnt :)

    Ich habe eine Arbeitsmappe, die viele Tabellenblätter mit Artikeldaten enthält (pro Artikel eine Tabelle). Weiterhin eine Tabelle "PPR Report" diese enthält eine Liste mit Bestell-Nr. in Spalte A. Ich möchte prüfen, ob alle Bestell-Nr. aus derm Tabellenblatt "PPR Report" auch in den Arkikel-Tabellen vorkommen und die gefundenen Zellen jeweils farblich markieren. Schwierigkeit ist, dass eine Bestellnummer auf mehreren Artikel-Tabellen und auch mehrfach in einer Artikel Tabelle vorkommen kann.

    Ich habe mir hierzu folgenden VBA Code geschrieben / aus verschieden Post zusammengebastelt :-). Problem ist, dass ich die Bestell-Nr. aktuell in jeder Artikel-Tabelle nur 1mal finde, kommt sie mehfach vor, dann werden diese Positionen nicht gefunden.

    VB.NET-Quellcode

    1. Sub Test_PPR_finden()
    2. Dim wks As Worksheet, wks_PPR As Worksheet
    3. Dim rng As Range
    4. Dim sAddress As String
    5. Dim sFind As String, i As Integer
    6. Dim cr As Long, tarWks As String
    7. Set wks_PPR = Worksheets("PPR Report")
    8. wks_PPR.Select
    9. Ende = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    10. For i = 4 To Ende
    11. 'Suchbegriff definieren
    12. sFind = Cells(i, 1)
    13. If sFind = "" Then Exit Sub
    14. For Each wks In Worksheets
    15. 'Tabellenblätter die von der Suche ausgenommen werden
    16. If wks.Name = "PPR Report" Then GoTo NextStart
    17. Set rng = wks.Cells.Find(What:=sFind, _
    18. LookAt:=xlPart, LookIn:=xlFormulas)
    19. If Not rng Is Nothing Then
    20. sAddress = rng.Address
    21. Do
    22. For Each Zelle In rng
    23. If Zelle.Value = sFind Then
    24. Zelle.Interior.ColorIndex = 7
    25. wks_PPR.Cells(i, 1).Interior.ColorIndex = 7
    26. wks_PPR.Cells(i, 54) = wks_PPR.Cells(i, 54) & wks.Name & " / "
    27. End If
    28. Next
    29. Set rng = wks.Cells.FindNext(after:=ActiveCell)
    30. If rng.Address = sAddress Then Exit Do
    31. Loop
    32. End If
    33. NextStart:
    34. Next wks
    35. Next i
    36. End Sub


    Was muss ich ändern um alle Positionen in einem Artikel-Tabellenblatt zu finden?

    Vielen Dank im vorraus für eure Hilfe!

    Gruß
    Ralf
    Hallo zusammen,

    für alle denen es vieleicht weiterhilft, habe die Lösung selbst gefunden:

    Code aus vorherigem Post ab Zeile 22 ersetzen:

    VB.NET-Quellcode

    1. ' Bereich in dem die PPR Nummer gesucht werden soll
    2. Set rng = wks.Range("h1:h" & wks.UsedRange.SpecialCells(xlCellTypeLastCell).Row)
    3. For Each Zelle In rng
    4. If Zelle.Value = sFind Then
    5. Zelle.Interior.ColorIndex = 4 '4=gün
    6. wks_PPR.Cells(i, 1).Interior.ColorIndex = 4 '4=gün
    7. wks_PPR.Cells(i, Start_Spalte) = Zelle.Row
    8. wks_PPR.Cells(i, Start_Spalte + 1) = wks.Name
    9. check = 1
    10. Start_Spalte = Start_Spalte + 2
    11. End If
    12. Next
    13. NextStart:
    14. Next wks
    15. 'wenn PPR nicht gefunden wurde, wird die Zelle im PPR Report rot markiert
    16. If check = 0 Then wks_PPR.Cells(i, 1).Interior.ColorIndex = 3 '4=rot
    17. Next_PPR:
    18. Next i
    19. End Sub


    Gruß
    Ralf