Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige