Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
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
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilennummer per Code ausgeben.

Zeilennummer per Code ausgeben.
19.07.2008 15:58:00
Peter
Hallo,
meine bescheidenen VBA-Kenntnis reichen scheinbar für die Lösung folgendes Problems nicht aus ( bzw. ich müsste zuviel Zeit dafür verwenden) :
In Tabelle1 Range ("G3") habe ich einen variablen numerischen Ausdruck, der in Tabelle2 Range ("A1:A1000") 1x vorkommt.
Die numerischen Ausdrücke in Tabelle2 Range ("A1:A1000") sind aufsteigend sortiert.
Ich möchte per VBA-Code herausfinden, in welcher Zeile von Tabelle2 dieser Ausdruck jeweils steht.
Danke für jeden Beitrag zur Lösung.
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilennummer per Code ausgeben.
19.07.2008 16:15:14
Matthias
Hallo Peter
probier mal.
diesen Code in ein Modul

Sub FindeZeile()
Dim LoZeile As Long
For LoZeile = 1 To 1000
With Worksheets("Tabelle2")
If .Cells(LoZeile, 1).Value = Worksheets("Tabelle1").Range("G3").Value Then MsgBox "gefunden  _
in Zeile " & LoZeile: Exit Sub
End With
Next
End Sub


Gruß Matthias

AW: Zeilennummer per Code ausgeben.
19.07.2008 16:31:00
Peter
Danke Matthias, hat prima funktioniert.
Gruß, Peter.

AW: Zeilennummer per Code ausgeben.
19.07.2008 17:01:00
Peter
Hallo Peter,
es geht auch mit der Find-Methode
Option Explicit

Public Sub Finden_Anzeigen()
Dim rzelle  As Range
With Worksheets("Tabelle2").Range("A1:A1000")
Set rzelle = .Find(Worksheets("Tabelle1").Range("G3").Value, _
Lookat:=xlWhole, LookIn:=xlValues)
If Not rzelle Is Nothing Then
MsgBox "Der gesuchte Wert  """ & Worksheets("Tabelle1").Range("G3").Value & _
"""  wurde in der Zeile  """ & rzelle.Row & """  gefunden.", _
64, "   Hinweis für " & Application.UserName
Else
MsgBox "Der gesuchte Wert  """ & Worksheets("Tabelle1").Range("G3").Value & _
"""  wurde NICHT gefunden.", _
48, "   Hinweis für " & Application.UserName
End If
End With
End Sub


Gruß Peter

Anzeige
AW: kurz und elegant mit Worksheetfunction.Match
19.07.2008 19:47:00
Daniel
HI
hier noch ne Variante:

Dim Zeile as long
Zeile = 0
on error Resume Next
Zeile = Worksheetfunction.Match(Sheets("Tabelle1").Range("G3").value, _
Sheets("Tabelle2").Range("A1:A1000").value, 0)
on error goto 0
If Zeile = 0 then
msgbox "Wert wurde nicht gefunden"
else
msgbox "Wert gefunden in Zeile: " & Zeile
end if


wenn sichergestellt ist, daß der gesuchte Wert auch in der Datenliste vorkommt und die Datenliste sortiert ist, dann würde auch dashier reichen (ist von der Performance bei grossen Datensätzen auch wesentlich schneller):


Dim Zeile as long
Zeile = Worksheetfunction.Match(Sheets("Tabelle1").Range("G3").value, _
Sheets("Tabelle2").Range("A1:A1000").value, 1)
msgbox "Wert gefunden in Zeile: " & Zeilef


aber wie gesagt, es muss anderweitig abgesichert sein, daß der Gesuchte Wert auch vorkommt, da die 2. Variante im anderen Fall einfach den nächstkleineren Wert als Ergebnis nimmt.
Gruß, Daniel
PS zwei anmerkungen noch:
- der entscheidende Unterschied zwischen Variante 1 und 2 ist fett markiert.
- die MATCH-Funktion entspricht der Vergleichsfunktion in Excel, dh. der zurückgegebene Zeilenwert bezieht sich immer auf den angegeben Suchvektor.
nur wenn dieser in Zeile 1 beginnt, dann stimmt der Rückgabewert mit der Zeilen-Nr der Fundstelle überein.
ansonsten muss zum Ergebnis noch die Differenz zwischen der ersten Zeile des Suchvektors und 1 zum Ergebnis hinzuaddiert werden, damit das Ergebnis der absoluten Excel-Zeilen-Nr. der Fundstelle entspricht.
Beispiel:
Zeile = Worksheetfunction.Match(Range("G3").value, Range("A15:A1015").value, 0)+14
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige