476 Aufrufe
Gefragt in Tabellenkalkulation von robbi58 Mitglied (966 Punkte)
wieder getaggt von halfstone

Hallo, liebes Forum!

Meine "Datenbank" sieht momentan so aus:

Die Werte aus Spalte A von sheet1 übertrage ich in ein neues Arbeitsblatt 1, die Spalten rechts davon werden mittels SVerweis eingefügt. Allerdings ist dies für mich eher unübersichtlich (bei manchen Aufgaben habe ich bis zu 20 Spalten).

Eine wesentliche Arbeitserleichterung für mich wäre folgende Anordnung (im Bild sheet1):

Ich habe hier in etwa 50 Zeilen mit 5 verschiedenen Aufgabengruppen auf sheet 1 gestaltet (pro Aufgabengruppe 10 Zeilen, die ich hier zur besseren Übersicht farblich unterschieden). So findet man z. B. die Aufgabengruppen blau in den Zeilen 20 bis 29, die grüne in den Zeilen 30 bis 39.

Gibt es eine Möglichkeit, die 5 Aufgabengruppen (jeweils die Spalte A; die anderen Spalten später mit SVerweis) so in ein neues Arbeitsblatt 1 einzufügen, dass diese per Zufallsprinzip ausgewählt werden und wiederum untereinander stehen (5 Beispiele pro Aufgabengruppe).

Dann sollte dies in etwa so aussehen:

Nu so eine Idee. Weil mit diesen Daten gestalte ich auf dem jeweiligen Blatt neue Aufgabenstellungen, die Spalten werden dann später ausgeblendet.

Habe allerdings keine Ahnung, ob dieser Gedanke nicht eine "mission impossible" ist.

Danke Robert

12 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Robert,

kannst du eine Beispieltabelle zur Verfügung stellen, damit sich das alles mal anschauen und testen kann? .

Gruß

M.O.
0 Punkte
Beantwortet von robbi58 Mitglied (966 Punkte)
Bearbeitet von robbi58

Hallo M.O.

Nachdem filehorst nicht funktioniert, habe ich die Beispielsdatei in meine Dropbox abgelegt.

Die Links lauten

https://www.dropbox.com/s/6j2vbv1f9jv9sqw/Beispieltabelle.xlsm?dl=0

https://www.dropbox.com/s/1g89tivydptohm6/Teilermengen_Probe.xlsm?dl=0

In der Datei "Teilermengen-Probe" habe ich ein Beispiel abgespeichert, damit man sieht, wie das "Endprodukt" ausssieht (die Spalten mit den Daten müssen erst noch ausgeblendet werden; das Blatt noch geschützt usw. werden). Zum Teil habe ich dort 24 Spalten mit Daten, die ich zur Erstellung der Aufgaben benötige. 

In der Datei "Beispielstabelle" sind auf sheet 2 die Daten so wie bisher aufgelistet. In sheet 1 habe ich die Daten für die einzelnen Aufgabengruppen (5 an der Zahl) untereinander aufgelistet (Gruppe 1 - Zeile 1 bis 15; Gruppe 2 - Zeile 16 bis 30; Gruppe 3 - Zeile 31 - 45; Gruppe 4 - Zeile 46 bis 60; Gruppe 5 - Zeile 61 bis 75).

Meine Überlegung wäre diese:

Im Arbeitsblatt 1 sollten von jeder Aufgabengruppe 5 Beispiele per Zufallsprinzip ausgewählt und untereinander aufscheinen (z. B. Gruppe 1 - Zeile A1 bis A5; Gruppe 2 - Zeile A6 bis A10; Gruppe 3 - Zeile A11 bis A15; Gruppe 4 - Zeile A16 bis A 20; Gruppe 5 - Zeile A 21 bis A 25). Den Rest würde ich per SVerweis einfügen.

Danke im Voraus. Robert

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo Robert,

probier mal das folgende Makro für deine Beispieltabelle:

Sub Zufallsaufgaben()

Dim i As Long
Dim d As Long
Dim iZ As Long
Dim lngZeile As Long
Dim arrFeld(15)
Dim iTemp
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet

'Quell- und Zielarbeitsblatt festlegen
Set wksQuelle = ThisWorkbook.Worksheets("sheet1")
Set wksZiel = ThisWorkbook.Worksheets("sheet2")

'Inhalt von Zieltabelle löschen
wksZiel.UsedRange.ClearContents

'Durchlauf für 5 Aufgabengruppen zu je 15 Zeilen
For d = 0 To 4
 
 'Es sollen jeweils 5 Aufgaben aus jeder Gruppe zufällig ausgewählt werden.
 'Nun wird ein Feld mit den Zeilennummern generiert
  For i = 1 To 15
    arrFeld(i) = i + d * 15
  Next i
  'Dieses Feld wird jetzt gemischt
   For i = 15 To 1 Step -1
            Randomize Timer
            iZ = Int((i * Rnd) + 1)
            iTemp = arrFeld(iZ)
            arrFeld(iZ) = arrFeld(i)
            arrFeld(i) = iTemp
   Next i
   'und nun werden die ersten fünf gemischten Zeilennummern in das Zielarbeitsblatt kopiert
   For i = 1 To 5
    'Zähler für Einfügezeilen
    lngZeile = lngZeile + 1
    'nun Zeile kopieren
    wksQuelle.Rows(arrFeld(i)).Copy Destination:=wksZiel.Rows(lngZeile)
   Next i
Next d

End Sub


Damit werden jeweils 5 Aufgaben aus jeder Aufgabengruppe in das sheet2 untereinander kopiert. Der Inhalt von sheet2 wird vor jedem Durchlauf gelöscht. Es wird immer die ganze Zeile kopiert.

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (966 Punkte)

Hallo M.O.

Dein Code funktioniert perfekt, was für mich eine bessere Übersicht mit sich bringt und damit auch eine Arbeitserleichterung. Normalerweise würde ich jetzt sagen, wir gehen mal auf ein Bier. So wird es nur ein virtuelles.

Ich bedanke mich recht herzlich für dein Bemühen. Offenbar gibt es für dich keine mission impossible. smiley yes

Robert​

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Robert,

danke für die Rückmeldung und die Einladung wink.

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (966 Punkte)
Bearbeitet von robbi58
Ich möchte nun den Code so abändern, dass nur die Spalten A bis C gelöscht werden.
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Robert,

fast richtig:

wksZiel.Range("A:C").ClearContents 

Gruß

M.O.

0 Punkte
Beantwortet von robbi58 Mitglied (966 Punkte)
Danke für die Antwort. Ich habe das Problem über Umwege gelöst.
0 Punkte
Beantwortet von halfstone Profi (18.1k Punkte)
Hi robbi58,

es wäre für die anderen Mitleser und späteren Finder dieser Fragestellung schön, wenn du deine Umwege hier darlegen könntest.

Gruß Fabian
0 Punkte
Beantwortet von robbi58 Mitglied (966 Punkte)
Bearbeitet von robbi58

Es tut mir leid, dass ich meine Gedanken (sprich Umwege) nicht dargelegt habe.

Nachdem die von M.O. gepostete Formel immer die ganzen Zeilen löscht, verschwinden damit auch die nebenstehenden Aufgabenstellungen. Deshalb habe ich folgenden Umweg gewählt:

sheet 1: fünf verschiedene Aufgabengruppen zu je 15 Fragen (75 Zeilen)

sheet 2: aus jeder der 5 Aufgabengruppen werden per Zufall je 5 Fragen ausgewählt (25 Zeilen)

Aufgabenblatt: in dieses kopiere ich dann nur jene Spalten aus sheet 2, die ich für meine Aufgabenstellungen benötige; damit kann ich dann die Spalten daneben benutzen, um meine Aufgabestellungen zu definieren.

Dies geschieht mittels des CommandButtons (=Start).

Das Ergebnis sieht dann in etwa so aus (die nicht benötigten Spalten sind noch nicht ausgeblendet)!

Da möchte ich gleich eine Frage zur letzten Zeile anschließen.

Auf 8 Ganze komme ich mit folgender Formel: abgerundeter Wert der Division 53 dividiert durch 30 plus die 7 Ganzen 

 =ABRUNDEN(Z11/Z13;0)+Y11

Jetzt fehlt noch der Wert im roten Feld, der in diesem Beispiel 23 beträgt. Ich habe es mit folgender Formel versucht:

=ABRUNDEN((Z11/Z13;0)*T13-AB19)*(-1)

Meine Idee: den abgerundeten Wert (=1) wird mit 30 multipliziert und dann subtrahiere ich die Zahl 53. Das ergibt als Ergebnis -23. Nun multipliziere ich das Ergebnis mit (-1), damit es positiv wird. Aber irgendwie funktioniert es nicht ganz.

Diesen Weg muss ich deshalb wählen, weil die Aufgaben ja per Zufall ausgewählt werden und in manchen Bespielen bei der Division auch 2 herauskommen kann.

Robert

...