Anzeige
Archiv - Navigation
640to644
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
640to644
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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.

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige