|
Tipp 0414
|
Daten in Zellen schreiben
|
|
|
Autor/Einsender: Datum: |
|
Angie 29.08.2004 |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
Die einfachste aber auch langsamste Methode Zellen zu bearbeiten besteht darin, auf
jede Zelle einzeln zuzugreifen. Beispielsweise kann mit der Cells-Methode
auf einzelne Zellen oder auf einen rechteckigen Bereich zugegriffen werden. Wenn Sie
jedoch große Datenmengen in ein Tabellenblatt einfügen müssen, ist diese Methode weniger
geeignet.
|
Zur Demo werden in den folgenden zwei Beispielen 100.000 Zellen
(1000 Zeilen x 100 Spalten) mit Zufallszahlen gefüllt. Im ersten Beispiel
wird mit der Cells-Methode jeder einzelnen Zelle ein Wert zugewiesen (Dauer ca.
4,5 Sekunden), im Vergleich dazu werden im zweiten Beispiel die Werte zunächst in
einem Datenfeld zwischengespeichert, und dann als Ganzes in den Zellbereich kopiert
(Dauer ca. 0,14 Sekunden). Bei 10.000 Zellen ist das Verhältnis 0,45 zu
0,015 Sekunden. Die hier angegebene Zeiten können natürlich je nach
Rechnerleistung/-auslastung schwanken.
|
|
Beispiel 1: Cells-Methode (Dauer ca. 4,5 Sekunden) |
|
|
Public Sub AddDataWithCellsMethod()
Const cRowsMax As Long = 1000
Const cColsMax As Integer = 100
Dim wksDest As Worksheet
Dim nRow As Long
Dim nCol As Integer
Application.ScreenUpdating = False
Set wksDest = ThisWorkbook.Worksheets(1)
wksDest.UsedRange.Delete
For nRow = 1 To cRowsMax
For nCol = 1 To cColsMax
wksDest.Cells(nRow, nCol) = Int(Rnd * 1000)
Next
Next
wksDest.UsedRange.Columns.AutoFit
Set wksDest = Nothing
Application.ScreenUpdating = True
End Sub
|
|
|
Beispiel 2: Datenfeld (Dauer ca. 0,14 Sekunden) |
|
|
Public Sub AddDataWithArray()
Const cRowsMax As Long = 1000
Const cColsMax As Integer = 100
Dim wksDest As Worksheet
Dim nRow As Long
Dim nCol As Integer
Dim avarArray(1 To cRowsMax, 1 To cColsMax) As Variant
Application.ScreenUpdating = False
Set wksDest = ThisWorkbook.Worksheets(1)
wksDest.UsedRange.Delete
For nRow = 1 To cRowsMax
For nCol = 1 To cColsMax
avarArray(nRow, nCol) = Int(Rnd * 1000)
Next
Next
wksDest.Cells(1, 1).Resize(cRowsMax, cColsMax) = avarArray
wksDest.UsedRange.Columns.AutoFit
Set wksDest = Nothing
Application.ScreenUpdating = True
End Sub
|
|
|
Microsoft Links zum Thema |
|
166342
|
Description of the limitations for working with arrays in Excel 2000, Excel 2002, and Excel 2003
|
177991
|
XL Limitations of Passing Arrays to Excel Using Automation
|
|
|
Die im Download befindliche *.bas-Datei kann in Excel im VB-Editor importiert werden.
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Excel-Version |
95 |
|
|
97 |
|
|
2000 |
|
|
2002
(XP) |
|
|
2003 |
|
|
2007 |
|
|
2010 |
|
|
|
|
Download (2,1 kB)
|
Downloads bisher: [ 1837 ]
|
|
|