Unbelegte Array-Elemente löschen



Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Unbelegte Array-Elemente löschen
von: Thorsten
Geschrieben am: 13.05.2002 - 22:28:23

Hallo - folgendes Problem stellt sich mir:
Nachdem ein eindimensionales Array gefüllt wurde, existieren Elemente mit dem Wert 0. Diese möchte ich nun aus dem Feld löschen und die restlichen Positionen jeweils nach links verschieben, um die dann - lückenlosen - Werte weiter zu verwenden.
Das soll sich nur über eine Schleife von LBound(arr) to UBound(arr) realisieren lassen, aber wie wird konkret ein Element mit dem Wert 0 gelöscht?

Über einen Tip würde ich mich freuen.
Thorsten




nach oben   nach unten

Re: Unbelegte Array-Elemente löschen
von: Michael Scheffler
Geschrieben am: 14.05.2002 - 08:25:24

Hallo,

ich würde ein zweites Feld anlegen. Und dann kannst Du die Werte, die von Null verschieden sind, dorthin auffüllen.


Gruß

Micha


nach oben   nach unten

Re: Unbelegte Array-Elemente löschen
von: MRR
Geschrieben am: 14.05.2002 - 08:27:16

Hallo Thomas,
vielleicht hilft Dir ja folgender Code - den Du natürlich anpassen darfst... - weiter?

Sub Aus_Array_0_loeschen()
Dim arr()
Dim As Integer
Dim As Integer
Dim As Integer
Dim intMax As Integer
intMax = Cells(1, 1).End(xlDown).Row
ReDim arr(1 To intMax)
For i = 1 To intMax
  arr(i) = Cells(i, 1)
Next
j = 0
For i = 1 To intMax
  If arr(i) = 0 Then
    For k = i To UBound(arr) - 1
      arr(k) = arr(k + 1)
    Next
    j = j + 1
  End If
Next
ReDim Preserve arr(1 To intMax - j)
End Sub

Eine Alternativ wäre, ein zweites Array anzulegen, in das Du alle Werte, die nicht 0 sind, kopierst, das 1. löscht und schließlich das 2. in das 1. wieder zurückkopierst. Aber so sollte es auch gehen. Was meinst Du?
Habe es hier auf einer lahmen Möhre mit 5000 Zahlen getestet, die dann bereinigt wieder in eine Spalte geschrieben wurden. Dauer ca. 3-4 Sekunden.
Viel Erfolg, Matthias

nach oben   nach unten

Vielen Dank erstmal!
von: Thorsten
Geschrieben am: 14.05.2002 - 21:01:09

Werde es heute abend ausprobieren. Die Werte in ein zweites Array zu kopieren, war mein erster Versuch - leider hatten die unbelegten Elemente das auch überstanden, was wohl daran liegt, daß ich noch nicht so fit in VBA bin.

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Tabellenwerte mit 10 multiplizieren ?"