Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen nach Wert durchsuchen

Forumthread: Zellen nach Wert durchsuchen

Zellen nach Wert durchsuchen
27.04.2006 09:35:51
Sacha
Hallo Leute,
ich habe folgendes Problemchen. Ich entwerfe gerade einen Vordruck für Etiketten. Über ein Makro erfolgt die mauelle Eingabe der Edv-Nummer und der Stückzahl. Diese werden im Tabellenblatt "Vordruck" eingetragen. Im zweiten Tabellenblatt "Daten", habe ich in Spalte A die EDV-Nummer, in Spalte B die Bezeichnung 1 und in Spalte C die Bezeichnung 2 stehen. Nun soll über eine Suchfunktion geschaut werden, ist die EDV-Nummer vorhanden und falls ja soll die in Spalte B daneben stehende Bezeichnung 1 im Tabellenblatt "Vordurck" eingetragen werden. Ich hab hier schonmal was gebastelt, aber irgendwie bekomme ich kein befriedigendes Ergebnis.
******************************************

Private Sub Eintragen_Click()
[b14] = "*" + Me.EdvNummer.Value + "*"
[b10] = Me.EdvNummer.Value
[b23] = "*" + Me.Menge.Value + "*"
[b19] = Me.Menge.Value
Dim rgZelle As Range
Dim rgBereich As Range
Set rgBereich = Worksheets("daten").Range("A1:A10000")
For Each rgZelle In rgBereich
If rgZelle.Value = Me.EdvNummer.Value Then
[a2].Value = rgZelle.Offset(0, 1)
Else
[a2].Value = "Nummer existiert nicht!!"
End If
Next
Unload Me
End Sub

**************************************
Vorab vielen Dank für die Bearbeitung
Sacha
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen nach Wert durchsuchen
27.04.2006 11:06:34
Franz S
Hallo Sascha,
mit folgenden Varianten kannst du den Ablauf beschleunigen:
Variante A:
Der Bereich mit den Daten wird dynamisch berechnet, dadurch reduziert sich die Zahl der Schleifen bis kein Wert gefunden wird.
Sobald ein Wert gefunden wird, wird die For-Schleife verlassen.

Private Sub Eintragen_Click()
[b14] = "*" + Me.EdvNummer.Value + "*"
[b10] = Me.EdvNummer.Value
[b23] = "*" + Me.Menge.Value + "*"
[b19] = Me.Menge.Value
Dim rgZelle As Range
Dim rgBereich As Range
With Worksheets("Daten")
Set rgBereich = .Range("A1:A" & .UsedRange.Row + .UsedRange.Rows.Count)
End With
For Each rgZelle In rgBereich
If rgZelle.Value = Me.EdvNummer.Value Then
[a2].Value = rgZelle.Offset(0, 1)
Exit For
Else
[a2].Value = "Nummer existiert nicht!!"
End If
Next
Unload Me
End Sub

Variante B:
Du verwendest die Funktion VLookup (entspricht SVERWEIS) zum suchen
Private Sub Eintragen_Click()
On Error GoTo Fehlerbehandlung
[b14] = "*" + Me.EdvNummer.Value + "*"
[b10] = Me.EdvNummer.Value
[b23] = "*" + Me.Menge.Value + "*"
[b19] = Me.Menge.Value
Dim rgZelle As Range
Dim rgBereich As Range
With Worksheets("Daten")
Set rgBereich = .Range("A1:A" & .UsedRange.Row + .UsedRange.Rows.Count)
End With
' EDV-Nummer liegt als Text vor
[a2].Value = Application.WorksheetFunction.VLookup(Me.EdvNummer.Value, rgBereich, 2, False)
' EDV-Nummer ist eine Zahl
'  [a2].Value = Application.WorksheetFunction.VLookup(Val(Me.EdvNummer.Value), rgBereich, 2, False)
Unload Me
Exit Sub
Fehlerbehandlung:
[a2].Value = "Nummer existiert nicht!!"
Unload Me
End Sub

Als dritte und wahrscheinlich schnellste Variante könntest du die SVERWEIS-Formel direkt in A2 eintragen.

=WENN(ISTFEHLER(SVERWEIS(B10;daten!A1:B10000;2;FALSCH));"Nummer existiert nicht!";
SVERWEIS(B10;daten!A1:B10000;2;FALSCH))

Gruß
Franz
Anzeige
;

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

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