Hi... also so richtig habe ich nicht verstanden, was du genau vorhast...
Hier mal ein Code, der dir den Bereich von K1:K6 zufällig mischt und ab dort einfügt (allerdings auf demselben Blatt), wo die markierte Zelle ist...
Ich würde mir einen CommandButton auf das Blatt legen und folgenden Code einfügen...
Code:
Dim myRange As Range
Dim myZeilen As Integer, myZufall As Integer
Dim zeile, spalte
zeile = ActiveCell.Row
spalte = ActiveCell.Column
Randomize
Range("K1:K6").Select
myZeilen = Selection.Rows.Count
Range(Cells(zeile, spalte), Cells(zeile + myZeilen - 1, spalte)).ClearContents 'der Bereich der leer sein muss
Range("A1:J100").ClearContents 'wenn ein bestimmter Bereich vorm (nächsten) Mischen geleert werden soll
For Each myRange In Selection.Cells
myZufall = Int((myZeilen * Rnd) + 1)
Do While Not IsEmpty(Cells(myZufall + zeile - 1, spalte))
myZufall = Int((myZeilen * Rnd) + 1)
Loop
Cells(myZufall + zeile - 1, spalte).Value = myRange.Value
Next myRange
Cells(zeile, spalte).Select
Edit: In diesem Code mischt er die Werte aus K1:K6 immer in L1:L6. Nun könntest du aus bestimmten Zellen mit einer Formel auf die gemischten Werte zugreifen... Also z.B. in die Zelle A3 die Formel
=L1, in Zelle A5 die Formel
=L2, usw. Mit einem klick auf den Button wird neu gemischt...
Code:
Dim myRange As Range
Dim myZeilen As Integer, myZufall As Integer
Dim zeile, spalte
zeile = 1
spalte = 12
Randomize
Range("K1:K6").Select
myZeilen = Selection.Rows.Count
Range("L1:L6").ClearContents
For Each myRange In Selection.Cells
myZufall = Int((myZeilen * Rnd) + 1)
Do While Not IsEmpty(Cells(myZufall + zeile - 1, spalte))
myZufall = Int((myZeilen * Rnd) + 1)
Loop
Cells(myZufall + zeile - 1, spalte).Value = myRange.Value
Next myRange
Range("A1").Select