Suchen nur über 2 For-schleifen?

und nochmals Hallo liebes Board,

Ich muss eine Suche ausführen, um Werte von einer Tabellein eine andere zu kopieren. Dabei muss für jeden im (zu importierenden) Arbeitsblatt enthaltenen Wert¨über die Pers.Nr eine Entsprechung in der Zieltabelle gefunden werden. Ist dann die Zielzeile gefunden, so wird der Wert zu einem (evtl.) vorhandenen dazuaddiert.

Leider sind sowohl die Quell- Als auch Ziel-Tabelle hochgradig variabel, und daher ist nicht vorherzusehen, wieviel Zeilen die beiden Tabellen haben könnten.

Mir ist dazu bisher nur eine verschachtelte For-Schleife eingefallen.
die sieht bei mir so aus:

Global fila\_4 As String (enthält z.B"test123.xls")
'\_\_\_\_\_\_\_\_

Sub add\_valores(mess As String, sit As Integer)

Dim wisa, wfila As Workbook
Dim i, j As Integer
Dim erj, eri As Long

Set wisa = ThisWorkbook
Set wfila = Workbooks(fila\_4)




eri = wisa.Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
erj = wfila.Sheets(mess).Cells(Rows.Count, 2).End(xlUp).Row

wisa.Activate
With ActiveWorkbook
 .Sheets(mess).Activate
 For i = 1 To eri
 For j = 3 To erj
 wfila.Sheets(2).Cells(j, sit).Value = wfila.Sheets
 If wfila.Sheets(2).Cells(j, 2).Value = .Sheets(mess).Cells(i, 2).Value Then
(2).Cells(j, sit).Value + .Sheets(mess).Cells(i, 4).Value
 End If
 Next j
 Next i
End With

wbt.Activate

End Sub

gibt es da eine bessere(schnellere) Lösung?
(abgesehen davon, dass ich aufgrund des vorherigen Post noch nicht sagen kann, ob das überhaupt funktioniert …

Vielen herzlichen Dank im Voraus,
cosPhi

Hallo cosPhi,

schau dir mal das Fragment an:

'mySheet ist das zu durchsuchende sheet, ratingLastRow ist die letzte relevante Zeile
 Set c2 = mySheet.Range("A7:A" & ratingLastRow). \_
 Find("wert", LookIn:=xlValues, Lookat:=xlWhole)

 If (Not c2 Is Nothing) Then
 newline = c2.Row
 Else
 newline = -1
 End If

.Find kennt noch mehr Parameter, solltest du dir dann mal anschauen.

mfg

Dirk.Pegasus

Hallo Dirk.Pegasus

das sieht ja SUPER aus!!!
muss ich gleich mal ausprobieren, wenn meine jetzige funktion ausgerechnet hat … (läuft seit 8 min …)
:wink:

sehe ich das richtig?
c2 ist eine Cell?
warum setzt du im Falle (k)eines Suchergebnisses die neue rheihe auf
-1??

Vielen herzlichen Dank für den Tip,
cosPhi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ein kleiner Tip
Du solltest nie „i as integer“ setzen, wenn du damit in deinem Blatt beliebig weit nach unten spazieren willst. Integer hört bei 32768, also in der Mitte des Blattes, auf!
Erich

Hallo cosPhi

sehe ich das richtig?
c2 ist eine Cell?

Nein C2 ist ein object, das quasi das Ergebnis der Suche beinhaltet. Ist was gefunden worden, hat es was im Bauch (unter anderem die Row der Fundstelle) wird nichts gefunden ist das object nothing.

warum setzt du im Falle (k)eines Suchergebnisses die neue
rheihe auf
-1??

Ich brauchte die Zeile um dann etwas zu damit zu machen. -1 sagt mir: Keine gefunden, also was anderes machen.

mfg

Dirk.Pegasus

Du solltest nie „i as integer“ setzen, wenn du damit in deinem
Blatt beliebig weit nach unten spazieren willst. Integer hört
bei 32768, also in der Mitte des Blattes, auf!
Erich

Verdammt !!!
das habe ich hier schon mal falsch gemacht …

Danke für den Hinweis!

Gruss,
cosPhi