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

Forumthread: Prüfung, ob Zahl bereits vorhanden

Prüfung, ob Zahl bereits vorhanden
25.07.2005 20:47:00
Nemesis
Hallo liebe Excel-Spezialisten,
mich quält ein riesiges Problem.
Wie kann ich in einer Liste von Rechnungsnummern prüfen, ob diese bereits
vorhanden ist? Kurz zum Aufbau der Tabelle: Spalte 1 beeinhaltet die
Lieferantenamen, Spalte 2 die Kreditorennummern und Spalte 3 die jeweilige
Rechnungsnummer. Wird in Spalte 3 eine neue Rechnungsnummer eingegeben, soll
automatisch geprüft werden, ob diese Nummer bereits in der Liste vorhanden ist.
Schon mal vielen, viiiieelllen Dank.
Grüße
Nemesis.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Prüfung, ob Zahl bereits vorhanden
25.07.2005 20:54:06
Reinhard
Hi Nemesis,
Daten--Gültigkeit--Benutzerdefiniert
Formel:
=SVERWEIS(A1;$A$1:$A$10;1;0)#NV
Gruß
Reinhard
AW: Prüfung, ob Zahl bereits vorhanden
25.07.2005 20:58:02
Peter
Servus,
alternativ wenn der Bereich variabel sein muss (Ende nicht vorhersehbar), geht auch das.
Tabelle1
 AB
115Rech.Nr. bereits vergeben
23 
33 
Formeln der Tabelle
B1 : {=WENN(ZÄHLENWENN(A1:INDIREKT("A"&MAX(ISTZAHL(A1:A1000)*ZEILE(A1:A1000))-1);INDIREKT("A"&MAX(ISTZAHL(A1:A1000)*ZEILE(A1:A1000))))>0;"Rech.Nr. bereits vergeben";"")}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
MfG Peter
Anzeige
AW: Prüfung, ob Zahl bereits vorhanden
25.07.2005 21:01:06
Nepumuk
Hallo Reinhard,
die Formel ist mir suspekt. Ich kann in Spalte C (die mit den Rechnungsnummern) eingeben was ich will. :-(
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Prüfung, ob Zahl bereits vorhanden
25.07.2005 21:12:07
Reinhard
Hallo Nepumuk,
jepp, egal was man eingibt kommt die Warnung, fiel mir leider nicht auf als ich in A1 übte.
Gruß
Reinhard
Anzeige
Lösung
25.07.2005 21:17:38
Reinhard
Hallo nepumunk,
warum die andere Formel nicht geht ist mir schleierhaft, Boris oder so wereden das wissen.
Nimm
=ZÄHLENWENN($A:$A;A1)=1
das klappt, habs grade in A1:A10 getestet.
Gruß
Reinhard
AW: Lösung
25.07.2005 21:26:29
Nepumuk
Hallo Reinhard,
und wenn das ganze dann noch in Spalte C funktioniert, dann sind alle glücklich :-)
Ich würde natürlich eine VBA - Lösung bevorzugen:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range, bolFound As Boolean
    If Target.Column = 3 And Target.Value <> "" Then
        For Each rngCell In Range(Target.Address)
            If WorksheetFunction.CountIf(Columns(3), rngCell.Value) > 1 Then
                rngCell.Value = ""
                bolFound = True
            End If
        Next
        If bolFound Then
            Target.Cells(1, 1).Select
            MsgBox "Rechnungsnummer bereits vergeben", 48, "Hinweis"
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
Geöffnete dateien automatisch prüfen
25.07.2005 21:38:59
Reinhard
Hallo Nepumuk,
da das ein Klassenmodul ergibt kann ich dich auch hier direkt fragen ohne den Umweg über ein neues Posting:-)
Es ist mir sehr lästig bei allen Dateien immer zu schauen ob da was Gemeines im Workbook_open oder Worksheet_open versteckt ist, sie dann wieder zu schliessen m mit aktiven Makros zu öffnen.
Kann ein Klassenmodul in der Personal.xls dies.
Also mir durchs Öfffnen dass die Beiden Codebereiche frei sind, oder im anderen Fall mir die Codes zeigt und ich dann öffnen mit ja oder nein beantworten kann und dann ggfs die Datei auch wieder vvon der fesplatte löscht.
Oder immer öffnen, aber allen Code der in den beiden Open_modulen sthet auskommentieren
Gruß
Reinhard
Anzeige
AW: Geöffnete dateien automatisch prüfen
25.07.2005 21:56:51
Nepumuk
Hallo Reinhard,
ein öffnen light gibt es nicht. Du könntest erst Excel öffnen, wobei ein Addin oder deine Personl die EnableEvents - Eigenschaft auf False setzt. Dann kannst du die Mappe öffnen, ohne dass Ereignisroutinen ausgeführt werden. Eine andere Möglichkeit sehe ich nicht.
Gruß
Nepumuk
Anzeige
AW: Geöffnete dateien automatisch prüfen
25.07.2005 22:36:26
Reinhard
Hallo Nepumuk,
das reicht mir, bin zufrieden über die Infromation, danke.
Gruß
Reinhard
AW: Lösung
25.07.2005 21:44:12
Nemesis
Hallo ihr beiden,
erst einmal vielen Dank für Eure tollen Lösungsvorschläge.
Jetzt muss ich sie nur noch in meinem Excel-Sheet zum Funktionieren
kriegen. Da ich in Bezug auf VBA nicht einmal Grundkenntnisse besitze,
versuche ich es mal mit ersterem Lösungsvorschlag.
Da sich die Rechnungsnummern in Spalte C befinden, muss ich in der Formel
wohl alle "A"s durch "C"S ersetzen, oder?
Anzeige
AW: Lösung
25.07.2005 21:46:35
Nepumuk
Hi Nemesis,
A durch C erstezen, JA!!
Gruß
Nepumuk
AW: Lösung
25.07.2005 21:50:51
Nemesis
Juuhuuu, es funkioniert!
Suupii, vielen lieben Dank. Ihr habt mir eine Menge Kopfzerbrechen
erspart.
Grüße und nochmal vielen Dank
Nemesis.
AW: Lösung
25.07.2005 21:53:03
PeterW
Hallo Nepumuk,
wie könnte man in deinem Code möglichst einfach den Fehler abfangen, der durch "And Target.Value "" Then" entsteht, wenn man ganze Bereiche löschen möchte?
Gruß
Peter
Anzeige
AW: Lösung
25.07.2005 22:04:10
Nepumuk
Hallo Peter,
da waren die Finger wieder schneller wie das Hirn. So geht's:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range, bolFound As Boolean
    If Target.Column = 3 And WorksheetFunction.CountBlank(Range(Target.Address)) = 0 Then
        For Each rngCell In Range(Target.Address)
            If WorksheetFunction.CountIf(Columns(3), rngCell.Value) > 1 Then
                rngCell.Value = ""
                bolFound = True
            End If
        Next
        If bolFound Then
            Target.Cells(1, 1).Select
            MsgBox "Rechnungsnummer bereits vergeben", 48, "Hinweis"
        End If
    End If
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Lösung
25.07.2005 22:08:53
PeterW
Hallo Nepumuk,
sag nichts gegen deine Finger, zumindest waren sie schneller als mein Hirn. ;-)
Danke und Gruß
Peter
AW: Lösung
25.07.2005 23:52:07
Erich
Hallo Nemesis, Nepumuk und alle anderen ...
noch ein VBA-Vorschlag (auf Grundlage von Nepumuks Lösung): Private Sub Worksheet_Change(ByVal Target As Range) Dim rngCell As Range, rngFCell As Range If Not Intersect(Target, Columns(3)) Is Nothing Then For Each rngCell In Intersect(Target, Columns(3)) If rngCell <> "" Then If WorksheetFunction.CountIf(Columns(3), rngCell) > 1 Then rngCell = "" If rngFCell Is Nothing Then Set rngFCell = rngCell End If End If Next rngCell If Not rngFCell Is Nothing Then rngFCell.Select MsgBox "Rechnungsnummer bereits vergeben", 48, "Hinweis" End If End If End Sub Mit dem Intersect wird verhindert, dass z. B. durch Kopie eines zweispaltigen Bereichs auf einen Bereich in den Spalten B und C doppelte Re-Nrn. entstehen. Die Zulassung leerer Zellen habe ich nach innerhalb der For-Each-Schleife verlegt. Statt "bolFound" habe ich "rngFCell" als Merker für die erste Fehlerzelle verwendet, die dann am Ende einfach selektiert werden kann.
@Nepumuk noch eine Frage:
Ich verwende jeweils "Target" statt "Range(Target.Address)". Gibt es einen Grund für die längere Schreibweise?
Grüße aus Kamp-Lintfort
Erich
Anzeige
@ Nepumuk - Bitte AW: Lösung ansehen
26.07.2005 09:22:27
Erich
Hallo Nepumuk,
da du sonst keinen Anlass hast, noch mal in den geschlossenen Thread zu schauen, mache ich ihn jetzt nochmal auf. Was du von
https://www.herber.de/forum/messages/642260.html
hältst, würde mich sehr interessieren.
Wenn du magst, hier eine Mappe zum Testen:
https://www.herber.de/bbs/user/25001.xls
Danke und Grüße aus Kamp-Lintfort
Erich
Anzeige
Ja, er weiss es...;-)
25.07.2005 21:35:35
Boris
Hi Reinhard,
"Boris oder so werden das wissen"
Deine unter Gültigkeit eingegebene Formel liefert immer #NV - ich hab das mal in Zellen visualisiert (hier auch bezogen auf Spalte A, wenngleich die Anfrage auf Spalte C lautet):
 
 AB
12#NV
22#NV
33#NV
Formeln der Tabelle
B1 : =SVERWEIS(A1;$A$1:$A$10;1;0)<>#NV
B2 : =SVERWEIS(A2;$A$1:$A$10;1;0)<>#NV
B3 : =SVERWEIS(A3;$A$1:$A$10;1;0)<>#NV
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Ein Formelergebnis kann man nicht mit einem Fehlerwert vergleichen. Das Ergebnis wird immer ein Fehlerwert sein. Dafür gibt es die Logikfunktionen ISTNV() und ISTFEHLER().
Und wenn du unter Gültigkeit die Formel in Spalte A hinterlegst, dann meckert Excel zunächst mal und fragt dich, ob du weitermachen möchtest. Bestätigst du das dann mit ja, dann hast du die Zelle für immer gesperrt, denn eine Abfrage auf #NV wird von Excel schlichtweg verweigert ;-)
Abgesehen davon ist die ZÄHLENWENN-Variante viel einfacher und besser.
Grüße Boris
Anzeige
Letzter Versuch
25.07.2005 22:52:28
Reinhard
Hallo Boris,
danke für die Infos.
Mir egal ob die Zählenwenn schöner ist, sverweis war meine Idee also will ich wissen wie es mit sverweis geht *motz* :-)
mein letzter Versuch
=NICHT(ISTNV(SVERWEIS(A1;$A$1:$A$10;1;0)))
oder
=NICHT(ISTNV(SVERWEIS(A1;$A$1:$A$10;1;0)))=wahr
klappt auch nicht, obwohl es in einer Zelle stehend korrekt wahr/falsch anzeigt.
Mir sit schon klar dass es in einer Zelle stehend nach de Eingabe ausgeführt wird und die prüfung bevor die Eingabe abgschlossen wird, aber daran kann es m.E. nnicht liegen.
Gruß
Reinhard
Anzeige
Natürlich kann das nicht gehen...
25.07.2005 23:08:35
Boris
Hi Reinhard,
denn sobald du einen Wert in eine Zelle eingibst und gleichzeitig (per Gültigkeit) mit SVERWEIS und Spaltenindex 1 auf eine Matrix zugereifst, die deine Eingabezelle beinhaltet, MUSS der SVERWEIS exakt deinen Eingabewert zurückliefern - egal oder du ihn zum 1., 2. oder 1000. mal eingegeben hast.
Glaub mir: SVERWEIS hist hier VÖLLIG fehl am Platze ;-)
Grüße Boris
Anzeige
thx. first now I give up :-)
25.07.2005 23:18:48
Reinhard
Gruß
Reinhard
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Prüfung, ob Zahl bereits vorhanden


Schritt-für-Schritt-Anleitung

Um in Excel zu prüfen, ob ein Wert in einer bestimmten Spalte vorhanden ist, kannst Du die Funktion ZÄHLENWENN verwenden. Hier ist eine einfache Anleitung:

  1. Daten vorbereiten: Stelle sicher, dass Du eine Spalte mit den Werten hast, die Du überprüfen möchtest, z.B. Rechnungsnummern in Spalte C.

  2. Formel eingeben: In einer anderen Zelle (z.B. D1) gib die folgende Formel ein:

    =WENN(ZÄHLENWENN(C:C;C1)>0; "Vorhanden"; "Nicht vorhanden")

    Diese Formel prüft, ob der Wert in C1 bereits in der gesamten Spalte C existiert.

  3. Anpassen für andere Spalten: Falls Du die Prüfung für andere Spalten durchführen möchtest, passe den Zellbezug in der Formel entsprechend an.


Häufige Fehler und Lösungen

  1. Formel gibt immer "Nicht vorhanden" zurück:

    • Überprüfe, ob Du die richtige Spalte in der Formel angegeben hast.
    • Stelle sicher, dass die Werte in der Spalte keine zusätzlichen Leerzeichen oder Formatierungen haben.
  2. #NV Fehler:

    • Achte darauf, dass die Zellen, die Du abfragst, nicht leer sind. Die Formel =SVERWEIS(A1;A:A;1;0) kann diesen Fehler auslösen, wenn die gesuchte Zahl nicht existiert.
  3. Falsche Ergebnisse bei der Gültigkeit:

    • Wenn Du Daten > Gültigkeit verwendest, stelle sicher, dass die Formel korrekt eingegeben wurde, z.B. =ZÄHLENWENN(C:C;C1)=1.

Alternative Methoden

  • VBA-Methode: Wenn Du VBA kennst, kannst Du eine Worksheet_Change-Ereignisprozedur verwenden, um automatisch eine Warnung anzuzeigen, wenn ein doppelter Wert in Spalte C eingegeben wird. Hier ist ein Beispielcode:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim rngCell As Range
       If Not Intersect(Target, Columns(3)) Is Nothing Then
           For Each rngCell In Intersect(Target, Columns(3))
               If WorksheetFunction.CountIf(Columns(3), rngCell.Value) > 1 Then
                   MsgBox "Rechnungsnummer bereits vergeben", vbExclamation
                   rngCell.ClearContents
               End If
           Next rngCell
       End If
    End Sub
  • SVERWEIS verwenden: Du kannst auch SVERWEIS in Kombination mit ISTNV verwenden, um zu prüfen, ob ein Wert vorhanden ist:

    =NICHT(ISTNV(SVERWEIS(A1;C:C;1;0)))

Praktische Beispiele

  • Beispiel 1: Überprüfen, ob eine Rechnungsnummer in Spalte C vorhanden ist:

    =WENN(ZÄHLENWENN(C:C;C1)>0; "Vorhanden"; "Nicht vorhanden")
  • Beispiel 2: Prüfen, ob ein Wert in einer anderen Tabelle vorhanden ist:

    =WENN(ZÄHLENWENN(Tabelle2!C:C;C1)>0; "Vorhanden"; "Nicht vorhanden")

Tipps für Profis

  • Daten validieren: Nutze die Datenvalidierung, um sicherzustellen, dass nur gültige Rechnungsnummern in die Spalte eingegeben werden können.

  • Indirekte Verweise: Verwende INDIREKT, um dynamisch auf Bereiche zuzugreifen, wenn Du mit variablen Daten arbeitest.

  • Matrixformeln: Für komplexere Prüfungen kann die Verwendung von Matrixformeln hilfreich sein. Denke daran, die Formel mit STRG + SHIFT + ENTER abzuschließen.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob ein Wert in zwei Spalten vorhanden ist? Du kannst eine Kombination von ZÄHLENWENN verwenden:

=ODER(ZÄHLENWENN(A:A;A1)>0; ZÄHLENWENN(B:B;A1)>0)

2. Was tun, wenn ich prüfen möchte, ob ein Wert in einer anderen Tabelle vorhanden ist? Nutze die ZÄHLENWENN-Funktion und gebe den Tabellennamen an:

=ZÄHLENWENN(Tabelle2!A:A;A1)>0

3. Wie kann ich prüfen, ob ein Text in einer Liste vorhanden ist? Verwende diese Formel:

=WENN(ZÄHLENWENN(A:A;"*Text*")>0; "Vorhanden"; "Nicht vorhanden")

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