Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code anpassen

Code anpassen
15.12.2023 18:07:20
Fritz_W
Hallo Forumsbesucher,

ich bin bei der Recherche auf folgenden Code von Nepumuk gestoßen, den ich gerne wie folgt angepasst hätte:
Anstatt die in Spalte A stehenden Zellinhalte in Spalte A zufällig anzuordnen und in Spalte B fortlaufend zu nummerieren sollte das Makro die Inhalte der Spalte A in Spalte B zufällig anordnen, die Zellen der Spalte A sollte aber in der ursprünglichen Form erhalten bleiben.

Für eure Hilfen im Voraus besten Dank.

mfg
Fritz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code anpassen
15.12.2023 18:13:54
RPP63
Ist doch recht einfach:
Tausche die Zeilen 37 und 42!
Viel Erfolg!

Gruß Ralf
AW: Code anpassen
15.12.2023 18:19:22
Fritz_W
Hier der Code, den ich vergessen hatte beizufügen:
Public Sub test2()
Dim lngIndex As Long, lngArray() As Long
Dim lngTemp As Long, lngAddress As Long
Dim lngRow As Long
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim lngArray(1 To lngRow)
For lngIndex = 1 To lngRow
lngArray(lngIndex) = lngIndex
Next
Randomize Timer
For lngIndex = lngRow To 1 Step -1
lngAddress = Int((lngIndex * Rnd) + 1)
lngTemp = lngArray(lngAddress)
lngArray(lngAddress) = lngArray(lngIndex)
lngArray(lngIndex) = lngTemp
Next
Columns(1).Insert
Range(Cells(1, 1), Cells(lngRow, 1)) = _
WorksheetFunction.Transpose(lngArray)
End Sub
Anzeige
AW: Code anpassen
15.12.2023 21:04:52
GerdL
Moin Fritz!

Public Sub Unit()


Dim lngRow As Long, lngIndex As Long, lngAddress As Long
Dim vntTemp As Variant, vntArray As Variant


lngRow = Cells(Rows.Count, 1).End(xlUp).Row

With WorksheetFunction

vntArray = .Transpose(.Transpose(.Transpose(Cells(1, 1).Resize(lngRow))))

Randomize Timer

For lngIndex = lngRow To 1 Step -1
lngAddress = Int((lngIndex * Rnd) + 1)
vntTemp = vntArray(lngAddress)
vntArray(lngAddress) = vntArray(lngIndex)
vntArray(lngIndex) = vntTemp
Next

Cells(1, 2).Resize(lngRow) = .Transpose(vntArray)

End With


End Sub

Gruß Gerd
Anzeige
AW: Code anpassen
15.12.2023 23:52:03
daniel
Hi
änhlich wie Gerd, aber etwas weniger aufwendig:

Sub test()

Dim arr
Dim x
Dim a As Long, b As Long

With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
arr = .Value
For a = 1 To UBound(arr)
b = WorksheetFunction.RandBetween(1, UBound(arr, 1))
x = arr(a, 1)
arr(a, 1) = arr(b, 1)
arr(b, 1) = x
Next
.Offset(0, 1).Value = arr
End With


End Sub


und hier eine Variante ohne Variablen und Schleifen:
Sub test()


With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
.Offset(0, 3).Formula = "=RAND()"
.Offset(0, 2).FormulaR1C1 = "=RANK(RC[1]," & .Offset(0, 3).Address(1, 1, xlR1C1) & ")"
.Offset(0, 1).FormulaR1C1 = "=INDEX(" & .Address(1, 1, xlR1C1) & ",RC[1])"
With .Offset(0, 1)
.Formula = .Value
End With
.Offset(0, 2).Resize(, 2).ClearContents
End With


End Sub


Gruß Daniel
Anzeige
AW: Code anpassen
16.12.2023 09:04:51
Fritz_W
Hallo Daniel,

auch Dir vielen Dank.
Einfach toll, welch kompetente Helfer mich in diesem Forum immer wieder unterstützen.
Ich bin sehr dankbar für diese Hilfen. Du aber auch Gerd haben mir hier schon mehrfach super Lösungen bereitgestellt.

mfg
Fritz

Nachfrage
21.12.2023 20:51:31
Fritz_W
Hallo VBA-Kundige,

ist es möglich, das Makro1 von Daniel und/oder das Makro von Gerd so anzupassen, dass der Code auch aus einem anderen Tabellenblatt aufgerufen werden kann.
Für eure Unterstützung im Voraus besten Dank.

mfg
Fritu
AW: Code anpassen
15.12.2023 21:23:22
Fritz_W
Hallo Gerd,
super!
vielen Dank
mfg
Fritz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige