Programmierung in excel mit arrays, hilfe?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Zufallszahl zwischen 0 und 100, (...)

Dein Ansatz/Vorgehen ist richtig, sofern die untere Grenze (0) inklusiv und die obere Grenze (100) exklusiv sein soll. Wenn die Aufgabenstellung das nicht genauer formuliert, würde ich beide Grenzwerte inkludieren, also mit 100 multiplizieren.

(...) dann 50 der zufallszahlen in arrays umwandeln, (...)

Dieser Teil ergibt meines Erachtens nicht so viel Sinn. Vielleicht ist er auch ungenau formuliert. Laut Beschreibung müssten mindestens 50 Zufallszahlen generiert und aus dieser Menge 50 Zahlen gewählt werden. Jede dieser 50 gewählten Zufallszahlen wird anschließend in ein eigenes Array abgelegt. Dann hättest du 50 Arrays mit jeweils einem Element, welches eine Zufallszahl beherbergt.

Sinnvoller wäre meines Erachtens die Anforderung, 50 Zufallszahlen zu generieren und in einem Array abzulegen. Das passt dann auch besser auf die letzte Anforderung.

Wie dem auch sei, für eine Lösung eignet sich in jedem Fall eine Schleife, deren Körper fünfzigmal ausgeführt wird. Im Körper wird eine Zufallszahl berechnet. Beachte, dass die Randomize-Funktion außerhalb der Schleife aufgerufen werden muss, da sie den Seed generiert.

Arrays kann man folgendermaßen anlegen und bearbeiten:

Dim words(2) As String
words(0) = "sun"
words(1) = "mountain"
words(2) = "sea"

Debug.Print words(1) ' mountain

In diesem Beispiel wird ein Array angelegt, welches drei Strings aufnehmen kann. Über einen Indexer besteht Lese- und Schreibzugriff auf jedes einzelne Element. Die Zählung des Index beginnt hierbei stets bei 0.

(...) dann in zwei Textfelder jeweils hinschreiben (...)

Eine Zelle im Excel-Formularblatt kannst du mit der Cells-Funktion ansprechen und ihren Wert mit dem Value-Property setzen. Die Zählung von Spalte und Zeile beginnt stets bei 1.

Beispiel:

Cells(1, 2).Value = 123

In der ersten Spalte (A) wird in der zweiten Zeile der Wert 123 eingetragen.

(...) die länge vom array (...)

Die Länge des Arrays sollte dir bereits fest bekannt sein, also geht es eigentlich nur noch um die Ausgabe.

Ich beschreibe hier aber noch einen Weg, wie man bei einem Array die Länge berechnen kann.

Den größten und den kleinsten Index des Arrays kann man sich jeweils via UBound- und LBound-Funktion zurückgeben lassen.

Beispiel:

Debug.Print UBound(words) ' 2

Die Länge entspricht demnach der Differenz aus größten und kleinsten Index. Da der Index eines Array üblicherweise nullbasiert ist, braucht es noch eine Kompensation um 1.

(...) die ersten fünf elemente von array (...)

Das Problem kannst du erneut mit einer Schleife lösen.

Du kannst dies mit Math.Rnd machen
oder etwas einfacher die vorhandene Excel Funktion verwenden.
test = Worksheetfunction.RandBetween(1,100)
Bei Verwendung mit Math.
muss man immer zuerst
Call Math.Randomize
aufrufen, damit es wirklich zufällig losgeht
Zufallszahl = Worksheetfunction.Round(Math.Rnd * 100,0)

In Zufallszahl steht in diesem Beispiel eine 0,1,2...,100

Benötigt man z.B eine Zufallszahl zwischen 5 und 100 dann sieht dies so aus:

Zufallszahl = Worksheetfunction.Round(Math.Rnd * 95 +5,0)