Clever-Excel-Forum

Normale Version: Arbeiten mit Arrays
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag

und zwar habe ich hier kein Problem, sondern möchte eher verstehen/etwas lernen.
Ich habe einen Bereich, welchen ich in ein Array einlese.
....
z.B. Scripting.Dictionary 
hab auch was von ArrayList gehört/gelesen
Werte = Range("A2:E5")
....
So, nun habe ich diese Werte und kann sie mir anschauen(Lokalfenster), also Werte(1,1)(1,2)(1,3)....
Ich würde jetzt gerne zb sagen, wenn Werte (1,5) = 1 ist, dann lösch mir sozusagen die Zeile, also (1,1)(1,2)(1,3)(1,4)(1,5) und fahre fort...(2,1)(2,2)...
Geht sowas?

Nächste Frage. Kann ich aus einem Wertebereich 2 Listen bilden und diese mir dann ausgeben lassen? 
Also wir nehmen wieder unseren Bereich "Werte =" und sagen, ist Wert(1,5) = 1 dann speichere mir diesen in Liste X , steht da 2, dann in Liste Y. 
Brauche ich eventuell eine neue Prozedur mit ByVal? 

Vielen Dank :)
Hallo,

zu Deiner ersten Frage:

nach meinem Kenntnisstand kannst Du in einem 2 - dimensionalen Array keine Zeilen löschen. Dagegen kannst Du mit der Index Funktion einzelne Zeilen aus dem Array ausgeben lassen, hier z. B. die Zeile 5:

Code:
BeispielArray1=application.index(BeispielArray,5,0)
(Quelle: www.snb-vba.eu)
Alternativ kannst Du an Stelle der "5" eine Variable einsetzen und das Ganze durch eine Schleife laufen lassen.

zu Deiner 2 Frage: Du kannst jederzeit z. B. mit einer For - Next Schleife und einer If oder Select Case Abfrage nach einzelnen Werten im Array suchen, und diese dann an einer beliebigen Stelle wieder ausgeben lassen. Diese können dann dort jeweils wieder in einem neuen Array eingelesen bzw. abgespeichert werden.

Wenn Du eine Beispieldatei mit einigen Werten und Deinem Code in das Forum einstellst, gibt es sicherlich einige VBA - Spezialisten, die Dir dazu weitere Tipps geben können.

Grüße
NobX
Hallo,

da das Array 2-dimensional ist, brauchst du ein Ausgabearray und 2 Schleifen, welche die Vorgabe mit dem gefundenen Wert der zu vergleichenden Zelle es 1. Arrays auf Treffer prüft.
1. Schleife zählt bei jedem Treffer um 1 hoch.
Ausgabearray mit der hochgezählten Nummer die Zeilen dimensionieren (Redim).
Zweite Schleife übergibt jeden Treffer in die Zeile des Ausgabearrays. Dabei braucht es ein weiteres hochzählen bei Treffer.
Ich hoffe es hilft.

Gruß Uwe
mal noch ein kleines Beispiel
[attachment=44553]
Gruß Uwe