Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
700to704
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
700to704
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Befehle möglich ?

VBA Befehle möglich ?
24.11.2005 16:25:48
udo
Hallo zusammen,
Zunächste möchte ich mich bedanken, bei allen, die mir bisher bei meinen Makros geholfen haben :-) Das war sehr nett.
Ein kleines weiteres Problem, welches eigentlich keines ist, weil das makro funktioniert ja. Allerdings würde mich doch sehr interessieren, wie man das kürzer schreiben kann.
Ich hab folgende Befehle:
Range("A1:BH1").Select
Selection.Copy
Range("Bj1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("A2:BH2").Select
Selection.Copy
Range("BJ60").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("A3:BH3").Select
Selection.Copy
Range("BJ120").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Das mache ich solange bis ich 8000 Zahlen aus einem ExcelBlatt mit insgesamt 480.000 Zahlen extrahiert habe, dabei ist es beliebig welchen Range ich nehme. Muss nur waagerecht sein.
Anders formuliert: ich hätte gerne 8.000 Zahlen zufällig aus 480.000 ausgewählt.
und diese untereinander geschrieben.
Wäre super Klasse , wenn jemand eine Idee hätte, wie ich das in VBA programmieren kann.
LG Udo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Befehle möglich ?
24.11.2005 19:19:43
Erich
Hallo Udo,
deine Fragestellung lässt ein paar Fragen offen:
Der Code, den du gepostet hast, kopiert jeweils 60 Zellen (aus den Spalten A bis BH) einer Zeile. Wenn man das 133 mal macht, hat man 7980 Zellen kopiert. Willst du genau 8000 Zellen kopiert haben - oder dürften's auch 8040 sein?
Wie viele belegte Zeilen hat deine Tabelle - vielleicht 8000? (Dann käme man bei 60 Spalten auf deine 480000 Zellen.)
So wie du jetzt kopiert hast, wird bei der zweiten Kopie die mit der ersten Kopie bereits gefüllte Zelle BJ60 überschrieben. Willst du das, oder sollte die zweite Kopie in Zeile 61 beginnen?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA Befehle möglich ?
24.11.2005 19:36:19
udo
Hallo Erich,
ja genau, es sind 60*8000 Zellen also 480.000
ES ist eigentlich egal , ob etwas überschrieben wird oder nicht. Hauptsache es kommen 8000 Zahlen heraus :-)
LG Udo
AW: VBA Befehle möglich ?
24.11.2005 19:48:40
Erich
Hallo Udo,
das reicht noch nicht ganz:
"Wenn man das 133 mal macht, hat man 7980 Zellen kopiert. Willst du genau 8000 Zellen kopiert haben - oder dürften's auch 8040 sein?" ?
So gaz zufällig ist die Auswahl nicht, wenn man jeweils 60 nebeneinander Stehende Zellen kopiert, auch wenn die Zeile zufällig gewählt ist. Willst du vielleicht gar keine 60er-Gruppen von Zahlen, sondern einfach nur irgendwie 8000 einzelne von den 480000 Zahlen zufällig ausgewählt haben?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA Befehle möglich ?
24.11.2005 20:04:40
Udo
Hallo ERich,
ok ... ja ich möchte genau 8000 Zellen. Dabei ist es egal, welche 60 man von den 133 auswählt.
Die restlichen 20 dann halt nur von a1:a20 z. B.
tschau
Udo
AW: VBA Befehle möglich ?
24.11.2005 20:59:05
Erich
Hallo Udo,
kann es sein, dass du die zweite Frage in meinem vorigen Beitrag nicht beantwortet hast?
Wie auch immer, so sollte es gehen:

Option Explicit
Sub Zufallskopie()
Dim ii%, lngZQ&, lngZZ&, lngLetzte&
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
Randomize
For ii = 1 To 134   '( = 8000 / 60 aufgerundet)
lngZQ = Int(lngLetzte * Rnd + 1)
If ii < 134 Then
Range(Cells(lngZQ, 1), Cells(lngZQ, 60)).Copy ' immer 60
Else
Range(Cells(lngZQ, 1), Cells(lngZQ, 20)).Copy ' die letzten 20
End If
Cells(60 * lngZZ + 1, 62).PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngZZ = lngZZ + 1
Next ii
Application.CutCopyMode = False
Cells(8000, 62).Select
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: VBA Befehle möglich ?
24.11.2005 21:11:16
Udo
Hallo Erich,
hab doch alle Fragen beantwortet ?!
Vielen Dank für Deinen Code, baue ihn gleich mal ein und bin schon gespannt.
Gruessle aus Aachen
Udo
AW: nicht mehr offen
25.11.2005 00:32:49
Erich
Hallo Udo,
wenn deine Frage beantwortet ist, solltest du den Thread nicht auf "offen" stellen.
Ich finde, meine letzte Frage
"Willst du vielleicht gar keine 60er-Gruppen von Zahlen, sondern einfach nur irgendwie 8000 einzelne von den 480000 Zahlen zufällig ausgewählt haben?"
hattest du mir nicht beantwortet.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Wer lesen kann ist klar im Vorteil
25.11.2005 00:40:59
udo
Hallo zu später Stunde,
genau, das würde reichen ... 8000 einzelne zufällig ausgewählt. Da ich dies in Form eines Makros nicht gebacken bekommen habe, habe ich halt z. B. von a1:a60 ausgewählt usw.
Ich wünsche eine gute Nacht und vielen Dank für Deine Hilfe :-))))
LG UDo
Anzeige
AW: Wer lesen kann ist klar im Vorteil
25.11.2005 06:31:40
Erich
Hallo Udo,
ohne die 60er-Gruppen gehts bedeutend einfacher:

Option Explicit
Sub Zufallskopie2()
Dim ii&
Randomize
For ii = 1 To 8000
Cells(ii, 62) = Cells(Int(8000 * Rnd + 1), Int(60 * Rnd + 1))
Next ii
End Sub

Wenn du gleich geschrieben hättest, was du willst...
Grüße von Erich aus Kamp-Lintfort
AW: Wer lesen kann ist klar im Vorteil
25.11.2005 11:25:52
Udo
Ok, hab ich wieder was gelernt. Wichtig alles genau und präzise zu formulieren. Ich arbeite daran :-)
Schönes WE
Udo
Ich nochmal
25.11.2005 01:14:08
Udo
Hallo Erich,
hab´s grade getestet. Das ist ja total Klasse. Funktioniert prima. Morgen versuch ich mal nachzuvollziehen was Du da schönes programmiert hast.
Falls ich Dir irgendwie behilflich sein kann, was Schach betrifft ... bitte melden.
LG Udo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige