HERBERS Excel-Forum - das Archiv
An alle Offset-Verliebten
Christian

Hallo Forum,
irgendwie kann ich mich dem Eindruck nicht erwehren, dass hier im Forum die Offset-Methode an Beliebtheit gewinnt. Wenn man schon Werte aus einzelnen Zellen einlesen muss, warum tritt man dann erst mal gezielt daneben um anschließend mit "Offset" das eigentliche Ziel zu treffen...?
hier zwei Beispiele, die bei mir auf allen Rechnern ca. 10% Differenz ausmachen...

Sub TestOffset()
Dim i&, t!
Cells.Clear
t = Timer
For i = 1 To 30000
Cells(i, 1).Offset(, 4) = i
Next
MsgBox Timer - t
End Sub
Sub TestNoOffset()
Dim i&, t!
Cells.Clear
t = Timer
For i = 1 To 30000
Cells(i, 5) = i
Next
MsgBox Timer - t
End Sub
Feed back ist willkommen - Gruß Christian

AW: An alle Offset-Verliebten
F1

Das Beispiel ist sinnfrei.
F1
AW: An alle Offset-Verliebten
Christian

hi,
'ne Erkärung wäre hier ja hilfreich, F1...
Christian
AW: An alle Offset-Verliebten
Tino

Hallo,
offset geht man um Daten von oder aus einer anderen Zelle zu bekommen.
zBsp. sucht man in Spalte A nach einem Wort und will die Daten aus Spalte B dazu.
Gruß Tino
auch schreiben in andere Zelle ist möglich. oT.
Tino

AW: An alle Offset-Verliebten
Daniel

Hi
mit Offset arbeitet man, wenn man eine Zelle über die FIND-Funktion, mit .End(xl...) , oder sonstwie ermittelt hat und jetzt eine Zelle bearbeiten will, die zu dieser Zelle einen bestimmten Abstand hat.
man hat zwar die Zelle, aber die genaue Position (Zeile, Spalte) ist nicht bekannt und müsste erst über die .Row oder .Column-Funktion ermittelt werden.
Da ist es dann bequemer und einfacher, die Offset-Funktion zu verwenden.
hier mal ein Beispiel, es soll zu einer Kundennummer eine neue Telefonnummer, die in der 3. Spalte rechts von der Kundennummer steht, eingetragen werden:
Cells.Find(What:="111-111").Offset(0,3).Value = "555-12345678"
ist einfacher als:
Cells(Cells.Find(what:="111-111").row, Cells.Find(what:="111-111").Column+3).Value ) = "555-12345678"
in zeitkritischen Schleifen würde ich sowieso ganz anders vorgehen.
Gruß, Daniel
AW: An alle Offset-Verliebten
Christian

Hallo Daniel,
in deinem Bsp zeigst du ja, wie Offset vernünftig angewendet werden kann.
Ich hab auch nichts gegen Offset an sich, aber man sieht eben auch immer wieder Code wie z.Bsp:
Me.TextBox1 = .Cells(Zelle, 1).Offset(0, 1)
Me.TextBox2 = .Cells(Zelle, 1).Offset(0, 2)
Me.TextBox3 = .Cells(Zelle, 1).Offset(0, 3)
....
Me.TextBox13 = .Cells(Zelle, 1).Offset(0, 13)
....
Ja, ich weiß, auch hier kann nicht nur auf Offset verzichten, sondern das Thema ganz anders angehen.
Mit dem Beitrag wollte ich nur darauf hinweisen, dass man in solchen Konstellationen alleine mit Offset 10% Performance einbüßt.
Grüße
Christian