Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeile mit Eintrag eines best. Wertes lokalisieren

Zeile mit Eintrag eines best. Wertes lokalisieren
31.05.2007 15:24:00
Peter
Liebes Forum
Ich habe in einer Tabelle in der Spalte E in irgend einer Zeile die Zahl 914410 eingetragen.
Wie kann ich mittels VBA der Variablen lngZeile die entsprechende Zeilennumer zuweisen?
Die Position variert und ich benötige die Zeilennummer jeweils bei der Erstellung einer Auswertung.
Danke für ein Feedback.
Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mit Eintrag eines best. Wertes lokalisie
31.05.2007 15:28:00
Matthias
Hallo Peter,
lngZeile = WorksheetFunction.Match(914410,columns(5),0)
Du solltest aber noch eine Fehlerabfrage einbauen, wenn die Zahl nicht gefunden wird.
Gruß Matthias

AW: Zeile mit Eintrag eines best. Wertes lokalisieren
31.05.2007 15:29:00
c0bRa
Hio...
So gehts:
Modul Modul1:
Option Explicit
Sub test()
    Dim r As Range
    For Each r [color=#FF0000]In Range("A:A")
        If r.Value = 914410 Then
            MsgBox r.Row
        End If
    Next
End Sub

Rückmeldung nicht vergessen...
c0bRa
Perl ist die einzige Sprache, die vor und nach einer RSA-Verschlüsselung gleich aussieht.

Anzeige
For Each r In Range("A:A") (owT)
31.05.2007 15:31:32
c0bRa

AW: Zeile mit Eintrag eines best. Wertes lokalisieren
31.05.2007 15:31:21
Hajo_Zi
Hallo Peter,
benutze Find

Sub Test322()
'   erstellt von Hajo.Ziplies@web.de 02.06.03
Dim Found As Range
Dim LoLetzte As Long
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536)
Set Found = .Range("A1:A" & LoLetzte).Find(914410, .Range("A" & LoLetzte), , xlWhole, ,  _
xlNext)
If Found Is Nothing Then Exit Sub  'falls nicht gefunden wird Sub verlassen
MsgBox Found.Rows
End With
End Sub



Anzeige
AW: Zeile mit Eintrag eines best. Wertes lokalisie
31.05.2007 16:06:00
Matthias
Hallo Hajo,
Dir ist ein kleiner Fehler unterlaufen:
nicht MsgBox Found.Rows, sondern MsgBox Found.Row.
Grüße Matthias

AW: Zeile mit Eintrag eines best. Wertes lokalisie
31.05.2007 16:11:40
Hajo_Zi
Hallo Matthias,
ich bin mir da auch nicht immer ganz sicher und hatte es getestet. Jetzt abe ich es nochmal getestet und beide Angaben liefern das gleiche Ergebnis.
Gruß Hajo

AW: Zeile mit Eintrag eines best. Wertes lokalisie
31.05.2007 16:45:00
Hajo_Zi
Hallo Matthias,
dann habe ich meinen Fehler gefunden. Der Suchwert war = Zeilennummer. Row ist korrekt.
Gruß Hajo

Anzeige
AW: Der große Benchmarktest...
31.05.2007 15:55:17
Matthias
...mit den drei Lösungsmöglichkeiten:

'Variante1: Schleifendurchlauf, bis Zelle gefunden wurde:
Function Variante1(wert As Long) As Long
Dim r As Range
For Each r In Range("A:A")
If r.Value = wert Then
Variante1 = r.Row
Exit Function
End If
Next
End Function
'Variante2: Tabellenfunktion VERGLEICH():
Function Variante2(wert As Long) As Long
Dim z As Long
On Error Resume Next 'z bleibt 0, wenn Wert nicht gefunden wird
z = WorksheetFunction.Match(wert, Columns(1), 0)
Variante2 = z
End Function
'Variante3: Find-Methode:
Function Variante3(wert As Long) As Long
Dim Found As Range
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
Set Found = Range("A1:A" & LoLetzte).Find(wert, Range("A" & LoLetzte), , xlWhole, , _
xlNext)
If Found Is Nothing Then Exit Function
Variante3 = Found.Rows
End Function
Function Benchmark()
Const anz = 1000 'Anzahl der Schleifendurchläufe
Const findein = 500 'gesuchten Wert in Zeile ... setzen
Dim i As Long, z As Long
Dim t1 As Single, t2 As Double
Columns(1).ClearContents
Cells(findein, 1) = 914410
t1 = Timer
For i = 1 To anz
z = Variante1(914410)
Next i
t2 = (Timer - t1) / anz * 1000
Debug.Print "Variante1: " & Round(t2, 2) & " ms"
t1 = Timer
For i = 1 To anz
z = Variante2(914410)
Next i
t2 = (Timer - t1) / anz * 1000
Debug.Print "Variante2: " & Round(t2, 2) & " ms"
t1 = Timer
For i = 1 To anz
z = Variante3(914410)
Next i
t2 = (Timer - t1) / anz * 1000
Debug.Print "Variante3: " & Round(t2, 2) & " ms"
End Function


Viel Spaß,
Matthias

Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige