AW: Codeerklärung
20.12.2005 10:32:59
Peter
Servus,
ich muss das jetzt aber nicht verstehen, warum du eine Ident.Nr. vergibst und dan nach einer Hilfsnummer suchst.
Zur kurzen Erklärung, für später Änderungen (Range ist eine Suchbereich in diesem Falle von A2 bis A letzte gefundene Zeile). Offset bedeutet (aus der OH Hilfe):
Ausdruck Erforderlich. Ein Ausdruck, der ein Range-Objekt zurückgibt.
RowOffset Optionaler Variant-Wert. Die Anzahl der Zeilen (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach unten, bei negativen Werten ein Versatz nach oben. Der Standardwert ist 0.
ColumnOffset Optionaler Variant-Wert. Die Anzahl der Spalten (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach rechts, bei negativen Werten ein Versatz nach links. Der Standardwert ist 0.
D.H. ich suche in Spalte A(1) nach übereinstimmung, sollte diese gefunden werden, muss ich in Spalte R(18) was eintragen also Offset(Zeile bleibt gleich =0, Spalte 18-1 = 17).
Hoffe es ist nun klarer
Sub tOriginal()
Dim lzeileS As Long, lZeileE As Long
Dim rng As Range, ranrngSuch As Range, rngErg As Range
Dim myarr
Dim intZ As Integer
With Sheets("Datenbank")
lzeileS = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngSuch = Range("A2:A" & lzeileS)
End With
With Sheets("Abrechnung")
lZeileE = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngErg = Range("A2:A" & lZeileE)
ReDim myarr(1, lZeileE)
For Each rng In .Range(rngErg.Address)
myarr(0, intZ) = rng
myarr(1, intZ) = rng.Offset(0, 15)
intZ = intZ + 1
Next
End With
With Sheets("Datenbank")
For Each rng In .Range(rngSuch.Address)
For intZ = 0 To intZ - 1
If rng = myarr(0, intZ) Then _
rng.Offset(0, 17) = myarr(1, intZ)
'Wenn du willst das die vorhandenen Werte addiert werden sollen, dann änder die obere 'Zeile in:
' rng.offset(0,17) = rng.offset(0,17) + myarr(2,intz)
Next
Next
End With
End Sub
MfG Peter