Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Prüfen ob Datensatz vorhanden ist

Prüfen ob Datensatz vorhanden ist
17.04.2017 17:24:38
René
Hallo @ all,
ich brauche mal ein bisschen Anschwung von Euch :).
Ja der COde sieht bestimmt nach Müll aus, aber mir ist wichtig das er Funktioniert :)^^
Dies ist nur der Ausschnitt der mit Sorgen bereitet. Dies soll eine Wettkampfliste sein. Per _
Listbox, übertrage ich die Kämpfer von einem Tabellenblatt ins andere. Was jetzt nicht Funktioniert ist, die Überprüfung ob der Wettkämpfer bereits vorhanden ist, er Prüft nur den ersten Datensatz im Tabellenblatt alle anderen nicht. Wo ist mein Fehler? Jeder Hilfe ist gern gesehen. Das fett gedruckte macht mir Probleme hmm.
Danke schon mal

'Markierten Wettkämpfer zur Auswahl der Punktekämpfer hinzufügen
With Me.lboListeWettkaempfer
For intZeile = 2 To 1000
If Tabelle5.Cells(intZeile, 4).Value = "" Then
Exit For
ElseIf Tabelle5.Cells(intZeile, 1).Value = .List(.ListIndex, 0) And _
Tabelle5.Cells(intZeile, 2).Value = .List(.ListIndex, 1) And _
Tabelle5.Cells(intZeile, 4).Value = .List(.ListIndex, 3) Then

For intZeilePruefung = 2 To 1000
If Tabelle4.Cells(intZeilePruefung, 1).Value = .List(.ListIndex, 0) And _
Tabelle4.Cells(intZeilePruefung, 2).Value = .List(.ListIndex, 1) Then
MsgBox "Diesen Registrierten Kämpfer gibt es bereits!"
ElseIf Tabelle4.Cells(intZeilePruefung, 1).Value  .List(.ListIndex, 0) And _
Tabelle4.Cells(intZeilePruefung, 2).Value  .List(.ListIndex, 1) Then
For intZeileUebertragung = 2 To 1000
If Tabelle4.Cells(intZeileUebertragung, 1).Value = "" Then
Tabelle4.Cells(intZeileUebertragung, 1).Value = Tabelle5.Cells(intZeileSicherung, 1).Value
Tabelle4.Cells(intZeileUebertragung, 2).Value = Tabelle5.Cells(intZeileSicherung, 2).Value
Tabelle4.Cells(intZeileUebertragung, 3).Value = Tabelle5.Cells(intZeileSicherung, 3).Value
Tabelle4.Cells(intZeileUebertragung, 4).Value = Tabelle5.Cells(intZeileSicherung, 4).Value
Tabelle4.Cells(intZeileUebertragung, 5).Value = Tabelle5.Cells(intZeileSicherung, 5).Value
Exit For
Else
End If
Next intZeileUebertragung
Exit For
Else
End If
Next intZeilePruefung
Else
End If
Next intZeile
End With

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Datensatz vorhanden ist
17.04.2017 17:43:42
René
Habe eine Lösung gefunden, und zwar nicht verschachteln sondern vorab prüfen :)
With Me.lboListeWettkaempfer
For intZeilePruefung = 2 To 1000
If Tabelle4.Cells(intZeilePruefung, 4).Value = "" Then
Exit For
ElseIf Tabelle4.Cells(intZeilePruefung, 1).Value = .List(.ListIndex, 0) And _
Tabelle4.Cells(intZeilePruefung, 2).Value = .List(.ListIndex, 1) And _
Tabelle4.Cells(intZeilePruefung, 4).Value = .List(.ListIndex, 3) Then
MsgBox "Diesen Registrierten Kämpfer gibt es bereits!"
Exit Sub 'Wenn bereits vorhanden, beende den Sub
Else
End If
Next intZeilePruefung
End With
Anzeige
geht auch ohne Schleife..
18.04.2017 09:26:25
UweD
unter Verwendung von Summenprodukt oder Zählenwenns() per VBA
Habe keine Lust die Daten nachzubilden; lad mal eine Musterdatei hoch.
LG UweD
Ohne Beispiel Datei schwer...
18.04.2017 16:43:11
Max2
Hallo,
bitte gib uns doch eine Beispieldatei...
Hier ist einfach ein bisschen ungetesteter Code zur "Anregung".
Habe den Quick and Dirty geschrieben.
Er sucht einfach nach dem Namen eines Kämpfers, die Variablen usw. muss man natürlich anpassen.
Die Zuweisung der Namensvariable kann man in einer schleife Lösen.
Option Explicit
Public ws As Worksheet
Public rngToSearch As Range
Sub Main_Find_Data()
Dim i As Long
Dim fighterToSearch As String
fighterToSearch = "Kämpfer nach dem gesucht wird" 'Anpassen
Set ws = ThisWorkbook.Sheets("Sheet wo Daten her kommen") 'Anpassen
Set rngToSearch = .Range(.Cells(1, 1), .Cells(Last_Row, 1)) 'Anpassen
i = Data_to_Find(fighterToSearch) 'kann über Schleifen gemacht werden
If i = 0 Then
Set ws = ThisWorkbook.Sheets("Sheet wo er rein soll")
Call Add_Fighter_to_Sheet(fighterToSearch)
Else
MsgBox "Der Wettkämpfer ist bereits vorhanden!", Title:="ACHTUNG!"
End If
End Sub
Function Last_Row() As Long
With ws
Last_Row = .Cells(.Rows.Count, 1).End(xlUp).Row 'Anpassen
End With
End Function
Function Data_to_Find(ByVal search As String) As Long
With ws
Data_to_Find = rngToSearch.Find(what:=search, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
End With
End Function
Function Add_Fighter_to_Sheet(ByVal fighter As String)
Dim lZeile As Long
lZeile = Last_Row + 1
With ws
.Cells(lZeile, 1).Value = fighter
End With
End Function

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datensatzprüfung in Excel: So findest du doppelte Einträge


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Datensatz in Excel bereits vorhanden ist, kannst du den folgenden VBA-Code verwenden. Dieser Code sucht nach einem Kämpfer und überprüft, ob er bereits in einer Liste vorhanden ist.

  1. Öffne die Excel-Datei und wechsle in das entsprechende Arbeitsblatt.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" → Einfügen → Modul.
  4. Kopiere den folgenden Code und füge ihn in das Modul ein:
Option Explicit
Public ws As Worksheet
Public rngToSearch As Range

Sub Main_Find_Data()
    Dim i As Long
    Dim fighterToSearch As String
    fighterToSearch = "Kämpfer nach dem gesucht wird" 'Anpassen
    Set ws = ThisWorkbook.Sheets("Sheet wo Daten her kommen") 'Anpassen
    Set rngToSearch = ws.Range(ws.Cells(1, 1), ws.Cells(Last_Row, 1)) 'Anpassen
    i = Data_to_Find(fighterToSearch) 'Kann über Schleifen gemacht werden
    If i = 0 Then
        Set ws = ThisWorkbook.Sheets("Sheet wo er rein soll")
        Call Add_Fighter_to_Sheet(fighterToSearch)
    Else
        MsgBox "Der Wettkämpfer ist bereits vorhanden!", Title:="ACHTUNG!"
    End If
End Sub

Function Last_Row() As Long
    With ws
        Last_Row = .Cells(.Rows.Count, 1).End(xlUp).Row 'Anpassen
    End With
End Function

Function Data_to_Find(ByVal search As String) As Long
    With ws
        Data_to_Find = .Cells.Find(what:=search, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
    End With
End Function

Function Add_Fighter_to_Sheet(ByVal fighter As String)
    Dim lZeile As Long
    lZeile = Last_Row + 1
    With ws
        .Cells(lZeile, 1).Value = fighter
    End With
End Function
  1. Passe die Variablen fighterToSearch und die Arbeitsblätter an deine Bedürfnisse an.
  2. Führe das Makro aus, um zu prüfen, ob der Kämpfer bereits vorhanden ist.

Häufige Fehler und Lösungen

  • Fehler: "Der Wettkämpfer ist bereits vorhanden!" erscheint immer.
    Überprüfe, ob der Suchbegriff korrekt in der fighterToSearch Variable definiert ist und ob die Daten in der richtigen Spalte stehen.

  • Fehler: Kein Ergebnis gefunden.
    Stelle sicher, dass die Zellen in rngToSearch richtig definiert sind und die Daten im richtigen Format vorliegen.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion ZÄHLENWENN nutzen. Diese Funktion zählt, wie oft ein bestimmter Wert in einem Bereich vorkommt:

=ZÄHLENWENN(A:A, "Kämpfer nach dem gesucht wird")

Wenn das Ergebnis größer als 0 ist, ist der Kämpfer bereits vorhanden.


Praktische Beispiele

  1. Beispiel für die Verwendung von VBA:
    Du kannst den oben angegebenen Code verwenden, um Kämpfer in einer Wettkampfliste zu überprüfen.

  2. Beispiel für die Verwendung von ZÄHLENWENN:
    Angenommen, du hast eine Liste in Spalte A und möchtest wissen, ob "Max Mustermann" vorhanden ist:

    =ZÄHLENWENN(A:A, "Max Mustermann")

    Das Ergebnis zeigt dir, wie oft dieser Name in der Liste vorkommt.


Tipps für Profis

  • Verwende Datenvalidierung in Excel, um sicherzustellen, dass nur gültige Kämpfernamen eingegeben werden.
  • Nutze Bedingte Formatierung, um doppelte Einträge in deiner Liste visuell hervorzuheben.
  • Dokumentiere deinen Code und die Arbeitsblätter gut, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die Suche nach dem Kämpfer automatisieren?
Du kannst ein Formular erstellen, das es dir ermöglicht, Kämpfernamen einzugeben, die dann automatisch überprüft und hinzugefügt werden.

2. Funktioniert dieser Code in älteren Excel-Versionen?
Ja, der VBA-Code sollte in den meisten Excel-Versionen ab 2007 funktionieren. Stelle sicher, dass Makros in deinen Excel-Einstellungen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige