Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Range vs. Cells

Range vs. Cells
02.04.2008 22:11:00
Gordon
Moin,
hab mal 'ne allgemeine Frage:
Was macht den Unterschied wenn ich eine Zelle im Excel per VGA mit Cells(1, 1) anspreche statt mit Range("A1")?
Gruß
Gordon

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Range vs. Cells
02.04.2008 22:42:00
Ramses
Hallo
Mit "Cells" kannst du einfacher Variablen verwenden
For i = 1 to 10
Cells(i,1) = "x"
Next i
Mit Range müsstest du die Anweisung so schreiben
For i = 1 to 10
Range("A" & i) = "x"
Next i
Ist etwas komplizierter. Fast unmöglich wird es, wenn du nicht Zeilen ausfüllen willst sondern Spalten
For i = 1 to 10
Cells(1,i) = "x"
Next i
Mit Range müsstest du die Anweisung so schreiben
For i = 1 to 10
Range(Left(Columns(i).Address(0,0),1) & i) = "x"
Next i
Die Anweisung Range bietet sich jedoch an, wenn du mit Namen arbeitest
Range("DeinBereichsname").Select
Gruss Rainer

Anzeige
AW: Range vs. Cells
02.04.2008 22:47:00
Gordon
Aha,
ok....ist also nur eine Sache der "Vereinfachung". Aber im Grunde kann man mit beidem ohne Einschränkung arbeiten?
Gruß
Gordon

AW: Range vs. Cells
02.04.2008 22:51:29
Ramses
Hallo
"...Aber im Grunde kann man mit beidem ohne Einschränkung arbeiten?..."
Das ist korrekt.
Gruss Rainer

AW: Range vs. Cells
02.04.2008 22:58:00
Gordon
Danke für Hilfe...

Anzeige
AW: Range vs. Cells
02.04.2008 23:04:00
Uduuh
Hallo,
kann man.
Range ist allerdings einen Tick langsamer als Cells, da Range interpretiert werden muss. Intern wird's auch wieder zu Cells. Das allerschnellste ist aber, wenn du den Range in ein Array einliest.
Teste mal:

Sub ttt1()
Dim t As Double, i As Long, n
t = Timer
For i = 1 To 50000
n = Cells(i, 1)
Next
MsgBox Timer - t
End Sub



Sub ttt2()
Dim t As Double, i As Long, n
t = Timer
For i = 1 To 50000
n = Range("A" & i)
Next
MsgBox Timer - t
End Sub



Sub ttt3()
Dim t As Double, i As Long, n, vntRng
t = Timer
vntRng = Range(Cells(1, 1), Cells(50000, 1))
For i = 1 To 50000
n = vntRng(i, 1)
Next
MsgBox Timer - t
End Sub


Gruß aus’m Pott
Udo

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Unterschiede zwischen Range und Cells in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Zellen ansprechen: Du kannst Zellen in Excel VBA entweder über Cells oder Range ansprechen.

    • Mit Cells(1, 1) greifst du auf die Zelle A1 zu.
    • Mit Range("A1") erreichst du die gleiche Zelle.
  2. Schleifen verwenden:

    • Um mehrere Zellen zu bearbeiten, ist Cells oft einfacher und flexibler:
      For i = 1 To 10
       Cells(i, 1) = "x"
      Next i
    • Mit Range sieht es so aus:
      For i = 1 To 10
       Range("A" & i) = "x"
      Next i
  3. Spalten füllen: Wenn du Spalten füllen möchtest, ist Cells ebenfalls die einfachere Wahl:

    For i = 1 To 10
       Cells(1, i) = "x"
    Next i

Häufige Fehler und Lösungen

  • Fehler: Verwendung von Range in einer Schleife kann komplex sein.

    • Lösung: Nutze Cells, um den Code einfacher zu gestalten.
  • Fehler: Langsame Ausführung bei Verwendung von Range.

    • Lösung: Verwende Cells, da es schneller ist. Alternativ kannst du Daten in ein Array laden und damit arbeiten.

Alternative Methoden

  • Array-Methoden: Lade Daten in ein Array für schnellere Zugriffe:

    Dim vntRng
    vntRng = Range(Cells(1, 1), Cells(50000, 1))
  • Für jedes Element: Du kannst auch For Each verwenden, um durch Zellen zu iterieren:

    For Each cell In Range("A1:A10")
      cell.Value = "x"
    Next cell

Praktische Beispiele

  • Zellen mit Cells füllen:

    Sub FillCells()
      For i = 1 To 10
          Cells(i, 1).Value = i
      Next i
    End Sub
  • Zellen mit Range füllen:

    Sub FillRange()
      For i = 1 To 10
          Range("A" & i).Value = i
      Next i
    End Sub
  • Schnelligkeitstest:

    Sub SpeedTest()
      Dim t As Double, i As Long, n
      t = Timer
      For i = 1 To 50000
          n = Cells(i, 1)
      Next
      MsgBox "Cells: " & Timer - t
    
      t = Timer
      For i = 1 To 50000
          n = Range("A" & i)
      Next
      MsgBox "Range: " & Timer - t
    End Sub

Tipps für Profis

  • Verwende Cells für dynamische Zugriffe, insbesondere wenn du Variablen für Zeilen und Spalten benötigst.
  • Für feste Bereiche, wie benannte Bereiche, ist Range oft die bessere Wahl.
  • Arbeite mit Arrays, wenn du große Datenmengen verarbeiten musst, um die Geschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Was ist schneller, Cells oder Range?
Cells ist in der Regel schneller als Range, da es direkt auf die Zellen zugreift, ohne zusätzliche Interpretation.

2. Kann ich mit beiden Methoden denselben Zellenbereich bearbeiten?
Ja, beide Methoden ermöglichen dir, denselben Zellenbereich zu bearbeiten, jedoch mit unterschiedlichen Ansätzen.

3. Gibt es einen Unterschied in der Verwendung von Cells und Range innerhalb von Schleifen?
Ja, Cells ist oft einfacher zu handhaben, während Range zusätzliche String-Konkatenation erfordert, was den Code komplizierter macht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige