Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nächsten Wert suchen

nächsten Wert suchen
21.11.2006 11:40:56
Metman
Hallo leute,
Problem ich muss in der Tabelle "imported" nach werten suchen die in "datenbasis" hinterlegt sind und dann bei einem offset(0, -2) die Werte nehmen und in Datenbasis zurückschreiben.
Code:

Sub test()
Dim rngFindID As Object, ersteAdresse$
Dim zeilen_max As Long, i As Long
Dim Identifier As String
Dim sheetDB As Worksheet
Dim sheetImp As Worksheet
Dim rangeImpD As Range
Dim firstAddress As String
Set sheetDB = Worksheets("Datenbasis")
Set sheetImp = Worksheets("imported")
Set rangeImpD = sheetImp.Columns(4)
zeilen_max = sheetDB.Cells(65536, 2).End(xlUp).Row
For i = 8 To zeilen_max
Identifier = sheetDB.Cells(i, 2)
If Identifier <> "" Then
With Worksheets("imported").Range("D:D")
'erste Verknüpfung finden
Set rngFindID = .Find(Identifier)
If Not rngFindID Is Nothing Then
ersteAdresse = rngFindID.Address
sheetDB.Cells(i, 8).ClearContents
sheetDB.Cells(i, 8).Interior.ColorIndex = 37
sheetDB.Cells(i, 8).Value = rngFindID.Offset(0, -2)
End If
'weitere Verknüpfungen finden
Do
Set rngFindID = .FindNext(rngFindID)
If rngFindID.Address = ersteAdresse Then Exit Do
If Not rngFindID Is Nothing Then
sheetDB.Cells(i, 9).ClearContents
sheetDB.Cells(i, 9).Interior.ColorIndex = 37
sheetDB.Cells(i, 9).Value = rngFindID.Offset(0, -2)
End If
Loop While Not rngFindID Is Nothing And rngFindID.Address <> ersteAdresse
End With
End If
Next i
End Sub

Für den ersten Wert klappts wunderbar, aber nach dem DO geht nichts mehr. Keine ahnung warum das nicht klappt :(
gruß

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nächsten Wert suchen
21.11.2006 12:59:33
Peter
Hallo Metmann,
der End If vor Do ist verkehrt.
Setz den hinter den Loop, dann sollte es gehen.
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: nächsten Wert suchen
21.11.2006 13:10:01
Metman
Hallo Peter,
der nimmt leider den letzten Wert in der Tabelle. Sonst funktionierts.
Ich bräuchte aber den nächsten (2.) nach dem 1. Wert.
Gruß vom Bodensee
AW: nächsten Wert suchen
21.11.2006 14:44:48
Peter
Hallo Metmann,
dann so:
Option Explicit

Sub test()
Dim rngFindID As Object, ersteAdresse$
Dim zeilen_max As Long, i As Long
Dim Identifier As String
Dim sheetDB As Worksheet
Dim sheetImp As Worksheet
Dim rangeImpD As Range
Dim firstAddress As String
Set sheetDB = Worksheets("Datenbasis")
Set sheetImp = Worksheets("imported")
Set rangeImpD = sheetImp.Columns(4)
zeilen_max = sheetDB.Cells(65536, 2).End(xlUp).Row
For i = 8 To zeilen_max
Identifier = sheetDB.Cells(i, 2)
If Identifier <> "" Then
With Worksheets("imported").Range("D:D")
'erste Verknüpfung finden
Set rngFindID = .Find(Identifier)
If Not rngFindID Is Nothing Then
ersteAdresse = rngFindID.Address
sheetDB.Cells(i, 8).ClearContents
sheetDB.Cells(i, 8).Interior.ColorIndex = 37
sheetDB.Cells(i, 8).Value = rngFindID.Offset(0, -2)
'    End If
'weitere Verknüpfungen finden
Do
Set rngFindID = .FindNext(rngFindID)
If Not rngFindID.Address = ersteAdresse Then 'Exit Do
If Not rngFindID Is Nothing Then
sheetDB.Cells(i, 9).ClearContents
sheetDB.Cells(i, 9).Interior.ColorIndex = 37
sheetDB.Cells(i, 9).Value = rngFindID.Offset(0, -2)
Exit Do
End If
End If
Loop While Not rngFindID Is Nothing And rngFindID.Address <> ersteAdresse
End If
End With
End If
Next i
End Sub

Wobei die Daten in 'imported' erst ab Zeile 2 beginnen dürfen, sonst findet Excel den ersten Wert nicht!
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: nächsten Wert suchen
21.11.2006 14:57:19
Peter
Hallo Metmann,
hier ist meine Test-Mappe:
https://www.herber.de/bbs/user/38372.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: nächsten Wert suchen
21.11.2006 15:54:42
Metman
Hallo Peter,
meine Lösung:

Sub test()
Dim rngFindID As Object, ersteAdresse$
Dim zeilen_max As Long, i As Long
Dim Identifier As String
Dim sheetDB As Worksheet
Dim sheetImp As Worksheet
Dim rangeImpD As Range
Dim firstAddress As String
Set sheetDB = Worksheets("Datenbasis")
Set sheetImp = Worksheets("imported")
Set rangeImpD = sheetImp.Columns(4)
zeilen_max = sheetDB.Cells(65536, 2).End(xlUp).Row
For i = 8 To zeilen_max
Identifier = sheetDB.Cells(i, 2)
If Identifier <> "" Then
With Worksheets("imported").Range("D:D")
Set rngFindID = .Find(Identifier)
If Not rngFindID Is Nothing Then 'is true?
ersteAdresse = rngFindID.Address
sheetDB.Cells(i, 7).ClearContents
sheetDB.Cells(i, 7).Interior.ColorIndex = 37
sheetDB.Cells(i, 7).Value = rngFindID.Offset(0, -2)
Do
Set rngFindID = .FindNext(rngFindID)
If rngFindID.Address <> ersteAdresse Then
If Not rngFindID Is Nothing Then
sheetDB.Cells(i, 8).ClearContents
sheetDB.Cells(i, 8).Interior.ColorIndex = 37
sheetDB.Cells(i, 8).Value = rngFindID.Offset(0, -2)
End If
Exit Do
End If
Loop While Not rngFindID Is Nothing And rngFindID.Address <> ersteAdresse
End If
End With
End If
Next i
End Sub

Deine funktioniert auch!
Bei mir war das hier das Problem -> If rngFindID.Address ersteAdresse Then...
Ich danke dir!!
gruß
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige