Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array per Zufall neu sortieren

Forumthread: Array per Zufall neu sortieren

Array per Zufall neu sortieren
21.01.2018 00:42:22
Andy
Hallo zusammen,
wie kann ich denn ein einfaches Array per Zufall neu sortieren?
Ich möchte gerne eingelesene Fotos per Zufall wiedergeben.

Set FSO = CreateObject("Scripting.Filesystemobject")
ReDim Bilder(1 To FSO.getfolder(MeinOrdner).Files.Count)
'alle Fotos einlesen
For Each Bild In FSO.getfolder(MeinOrdner).Files
If LCase(Bild.Name) Like FilterFotos & "*.jpg" Then
L = L + 1
Bilder(L) = Bild
End If
Next
'Array kürzen
ReDim Preserve Bilder(1 To L)
'Bilder per Zufall neu sortieren
Gruß Andy
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array per Zufall neu sortieren
21.01.2018 03:04:56
Daniel
Hi
Tausche jede Position mit einer zufällig ausgewählten Position.
For i = 1 To L
x = WorksheetFunction.RandBetween(1, L)
Zwischenspeicher = Bilder(i)
Bilder(i) = Bilder(x)
Bilder(x) = Zwischenspeicher
Next
Gruß Daniel
AW: Array per Zufall neu sortieren
21.01.2018 20:32:43
Andy
Vielen Dank für den Tipp!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Array per Zufall neu sortieren in Excel


Schritt-für-Schritt-Anleitung

Um ein Array in Excel per Zufall neu zu sortieren, kannst du folgenden VBA-Code verwenden. Diese Methode eignet sich besonders gut, wenn du Bilder zufällig sortieren möchtest.

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.

  3. Kopiere den folgenden Code in das Modul:

    Sub BilderZufaelligSortieren()
       Dim FSO As Object
       Dim Bilder() As Variant
       Dim L As Long
       Dim MeinOrdner As String
       Dim FilterFotos As String
       Dim x As Long
       Dim Zwischenspeicher As Variant
    
       MeinOrdner = "C:\DeinOrdner\" ' Hier den Pfad zu deinem Ordner einfügen
       FilterFotos = "Bild" ' Hier kannst du den Filter anpassen
       Set FSO = CreateObject("Scripting.FileSystemObject")
    
       ReDim Bilder(1 To FSO.GetFolder(MeinOrdner).Files.Count)
    
       ' Alle Fotos einlesen
       For Each Bild In FSO.GetFolder(MeinOrdner).Files
           If LCase(Bild.Name) Like FilterFotos & "*.jpg" Then
               L = L + 1
               Bilder(L) = Bild
           End If
       Next
    
       ' Array kürzen
       ReDim Preserve Bilder(1 To L)
    
       ' Bilder per Zufall neu sortieren
       For i = 1 To L
           x = WorksheetFunction.RandBetween(1, L)
           Zwischenspeicher = Bilder(i)
           Bilder(i) = Bilder(x)
           Bilder(x) = Zwischenspeicher
       Next
    End Sub
  4. Ändere den Pfad zu deinem Ordner und den Filter nach Bedarf.

  5. Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs."

    • Ursache: Stelle sicher, dass der Ordnerpfad korrekt ist und tatsächlich Bilddateien vorhanden sind.
  • Fehler: "Typenkonflikt."

    • Ursache: Überprüfe, dass alle Bilder die gleiche Dateiendung haben (z.B. .jpg).

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die RAND()-Funktion in Excel verwenden, um eine Liste zufällig zu sortieren:

  1. Erstelle eine Liste deiner Bilder in einer Spalte.
  2. Füge in der benachbarten Spalte die Formel =RAND() ein.
  3. Sortiere die gesamte Tabelle nach der Spalte mit den Zufallszahlen.

Diese Methode eignet sich gut, um eine Excel-Liste zufällig zu sortieren.


Praktische Beispiele

Angenommen, du hast eine Liste von Bildnamen in den Zellen A1:A10. Um diese Liste zufällig zu sortieren, kannst du die RAND()-Methode wie folgt anwenden:

  1. In Zelle B1: =RAND()
  2. Ziehe die Formel bis B10.
  3. Markiere die Zellen A1:B10 und gehe zu Daten > Sortieren.
  4. Wähle die Spalte B und sortiere nach Werten.

So erhältst du eine zufällige Anordnung deiner Bilder.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang deines VBA-Codes, um die Ausführung zu beschleunigen.
  • Vergiss nicht, nach dem Sortieren den Bildschirmaktualisierungsmodus wieder zu aktivieren: Application.ScreenUpdating = True.
  • Experimentiere mit verschiedenen Filterkriterien, um gezielt Bilder zufällig zu sortieren, die einem bestimmten Muster entsprechen.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um auch andere Dateiformate zu berücksichtigen?
Du kannst die Bedingung in der If-Anweisung ändern, um andere Dateitypen wie .png oder .gif ebenfalls einzuschließen.

2. Ist es möglich, die Bilder direkt in Excel anzuzeigen, nachdem sie zufällig sortiert wurden?
Ja, du kannst die Bildpfade in Excel speichern und die Bilder mit einer Formel oder einem VBA-Skript in das Arbeitsblatt einfügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige