Hallo und guten Abend, hoffe jemand kann mir bei folgender Herausforderung helfen:
Im Tabellenblatt "Source" befinden sich eine gewisse, vorher nicht eindeutige Anzahl von Datensätzen.
Ich möchte nach dem Zufallsprinzip 20% der Datensätze auswählen (wenn z.b. 100 Datensätze, dann sollen 20 nach Zufall ausgewählt werden), und die Spalten "A" bis "I" der ausgewählten Datensätze kopieren und in die Tabelle "COUNT_SOURCE" ab aktiver Zelle "A5" einfügen. Bei nochmaliger Ausführung sollten dann wieder nach Zufallsprinzip andere Datensätze ausgewählt werden, also nicht immer die gleichen.
Die Auswahl im "Source" Datenblatt sollte anschließend mit Schriftfarbe "Blau" formatiert werden. (nicht zwingend erforderlich)
Habe keine wirkliche Idee wie ich das ganze angehen sollte und wäre für Hilfe oder Tipps ( oder sogar die Lösung) dankbar.
Vermutlich habe ich die Fragestellung nicht völlig verstanden, aber einfach geantwortet, es gibt die Funktion 'zufall' bzw' 'zufallsbereich'. Daraus einen Ansatz abzuleiten, jeden 5-ten Datensatz zu auszuwählen, ist recht einfach.
Hi, danke für die schnelle Antwort, Die Funktionen habe ich auch gesehen aber ich brauche eine VBA Lösung und weiß nicht wie ich das einabauen kann. Hier noch mal der Versuch mein Anliegen genauer zu erklären:
Aus der Tabelle: Source sollen von den dort enthaltenden Datensätzen (zur Zeit 48) willkürlich 20% (in dem Fall 10 Datensätze) ausgewählt und die Tabelle "Count_template" kopiert werden (nur die Spalten "A:I") (Die Anzahl Datensätze in der Tabelle ist variabel und wird monatlich neu geladen).
1. -Ermittele Anzahl Datensätze in Tabelle "Source" 2.- Berechne 20% von Gesamtanzahl Datensätze 3.- Markiere "zufällige" Datensätze bis 20% Anzahl erreicht 4.- Kopiere Spalten A:I dieser Datensätze in Tabelle "COUNT_TEMPLATE" ab Zelle A5
Ich habe auch noch eine Beispieldatei hochgeladen. Das enthaltene Makro kopiert zur Zeit alle Datensätze, aber ich brauche wie gesagt nur "20% zufällig ausgewälhter Datensätze".
Die vorgeschlage Lösung dürfte perfekt sein, aber hier eine Möglichkeit ohne Ranking:
Option base =1 Sub jede_5_Zeile kopieren() Anzahl = WorksheetFunction.Count(Columns("A")) ReDim Arr(Anzahl) I=1 Do While i<= Int(Anzahl / 5+0.5) K = WorksheetFunction.Max(2, Int(Anzahl * rnd +0.5) If IsEmpty(Arr(k)) then Sheets("tabelle1").Range("A" & k & "B:"&k).copy Sheets("tabelle2").Range("a4").offset(i,0).pastespecial Arr(k)=1 I=i+1 End if Loop End sub
09.02.2016, 08:37 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2016, 08:37 von Gigbert62.)
Hi snb, auch Dir vielen Dank für den Code.
Wie auch beim Fennek, leider verstehe ich das ganze nicht wirklich, habe aber den Code auch rüberkopiert und laufen lassen.
Klappt prima, wollte nur in dem Code "Tabelle9" in einen anderen Tabellennamen ändern und danach bekam ich eine Fehlermeldung, "Object nicht definiert" -- hatte die neue Tabelle vorher aber angelegt bzw. umbenannt. Name war "RANDOM".