Stellen im Array Auswerten. VBA

Hallo liebe Forum user:stuck_out_tongue:
Ich habe ein Problem welches Ich nicht alleine Lösen kann.
ich habe ein Array(25,100)
Das Array sieht wie Folgt aus:

peter ja nein ja 10.10.2001
Hans ja ja nein 11.02.2002
Peter nein nein ja 12.12.2001
günter ja ja ja 10.09.2003
Franzi nein ja nein 09.04.2002
Peter ja ja ja 03.04.2004

Nun möchte ich das Array aufräumen und jede Person nurnoch einmal drin haben, Wichtig ist aber das nur der Eintrag mit dem Aktuellsten Datum drin bleibt das wäre also oben die zeile

Peter ja ja ja 03.04.2004

die anderen beiden müssen aus dem Array gelöscht werden.
Das soll natürlich mit allen anderen Personen auch so gemacht werden.

Wie stelle ich das am besten an ?

mfg jonny

Hallo Jonny!

Nun möchte ich das Array aufräumen und jede Person nurnoch
einmal drin haben, Wichtig ist aber das nur der Eintrag mit
dem Aktuellsten Datum drin bleibt das wäre also oben die zeile

Ich würde zuerst ein neues Array erstellen. Dann mit einer Schleife durch das gesamte alte Array laufen. Jeden Eintrag überprüfst du dann, ob er im Neuen schon vorkommt. Wenn nein, dann kopiere den Eintrag. Wenn ja, dann überprüfe noch auf das Datum.

In Pseudocode also etwa so:

AltesArray(25,100)
NeuesArray(25,100)

For Each Zeile In AltesArray
 If NeuesArray.contains(Zeile.Name) Then
 If NeuesArray.IndexOf(Zeile.Name).Datum 

Ich hoffe, ich konnte das Verfahren einigermaßen beschreiben.

mfg
christoph

Nachfrage
Hallo Jonny,

ich habe ein Array(25,100)

peter ja nein ja 10.10.2001
Hans ja ja nein 11.02.2002
Peter nein nein ja 12.12.2001

sorry, blick grad nicht durch, may be die Hitze :smile:

ich schreib mal die obige Tabelle um in ihre Arrayindexe, so wie ich das sehe.

0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4

Sehe ich das so richtig oder peile ich da grad sehr falsch?

Danke ^ Gruß
Reinhard

If Zähler2 = 0 Then
For i = 0 To 28
neuesArray(i, 1) = ImportArray(i, 2)
neuesArrayCounter = 1
Next i
End If

i = 1
For i = 1 To neuesArrayCounter
For Zähler1 = 2 To Zeilenanzahl2
If neuesArray(1, i) = ImportArray(1, Zähler1) Then
If neuesArray(25, i) >= ImportArray(25, Zähler1) Then
Else
For i = 0 To 28
neuesArray(i, 1) = ImportArray(i, 2)
Next i
End If
End If
Next Zähler1
Next i

1 Like

Ich musste auch erst wieder 4 x lesen…
Also JA so kann man das machen …

peter ja nein ja 10.10.2001
Hans ja ja nein 11.02.2002
Peter nein nein ja 12.12.2001

0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4

und nun möchte ich schauen ob in Spalte 0 etwas doppelt ist und wenn ja möchte ich den eintrag der in Spalte 4 (Datum) am neusten ist behalten alle anderen raus.

mfg jonny

1 Like

Hey Jonny,

der Fragesteller suchte einen Source in VBA und nicht in .NET
In .NET koennte man es noch einfacher machen. Sprichwort dazu ist LinQ :wink:
Da wäre dies nur ein Einzeiler :smiley:

MfG Alex

Hallo Alex!

der Fragesteller suchte einen Source in VBA und nicht in .NET

Ich weiß, ich weiß. Deshalb schrieb ich ja auch irgendetwas von Pseudocode. Und ja, ich gebe zu, der Pseudocode schaut sehr nach VB.Net aus… :wink:

mfg
christoph