Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1456to1460
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

Zufällige Zeile anspringen

Zufällige Zeile anspringen
17.11.2015 08:27:40
Ingo
Hallo
Ich habe hier einen Code, der mir ermöglicht, in meiner Excel-Tabelle in eine zufällige Zeile (in Spalte B) zu springen.
Sub Zufall()
With ActiveSheet.UsedRange.Columns(2)
.Cells(WorksheetFunction.RandBetween(1, .Rows.Count), 1).Select
End With
End Sub

Nun ist es allerdings so, dass auch die Zeilen berücksichtigt werden, die keinen Inhalt haben.
Meine Excel-Tabelle ist im Grunde ganz einfach aufgebaut:
* Die Zeilenzahl ist nicht fix, sondern verändert sich immer wieder mal.
* Es gibt keine Leerzeilen zwischendurch.
* Es fängt einfach oben an, dass die Zeilen gefüllt sind und hört dann eben irgendwann auf.
Mag mir jemand von Euch helfen, den Code zu ergänzen.
Und zwar so, dass nur der "obere" Teil der Tabelle berücksichtigt wird, dessen Zeilen eben in Spalte B Werte enthalten?
Gruß
Ingo

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufällige Zeile anspringen
17.11.2015 08:49:09
Michael
Hallo Ingo!
So?
Sub ZufallsZeile()
Dim Letzte As Long
With ActiveSheet
Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(WorksheetFunction.RandBetween(1, Letzte), 2).Select
End With
End Sub
LG
Michael

AW: Zufällige Zeile anspringen
17.11.2015 09:26:21
Ingo
Hallo Michael
Danke für Deine schnelle Hilfe.
Das funktioniert leider nicht.
Der Fehler liegt aber bei mir.
Ich hatte vergessen zu sagen, dass in der Spalte B ja Formeln enthalten sind.
Gibt es dafür eine Lösung?
Gruß
Ingo

AW: Kann ich nicht nachvollziehen
17.11.2015 09:56:37
Michael
Hallo Ingo!
Das funktioniert leider nicht.
Bei mir funktioniert es. Aber evtl. hab ich etwas anderes umgesetzt, als Du erreichen möchtest.
Was möchtest Du erreichen und was funktioniert nicht?
Ich hatte vergessen zu sagen, dass in der Spalte B ja Formeln enthalten sind.
Das ist irrelevant. Auch Zellen mit Formeln sind "gefüllte" Zellen und werden von meinem Makro erfasst.
LG
Michael

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 10:21:20
Ingo
Hallo Michael
Ich hatte mich blöd ausgedruckt :)
Dein Code funktioniert natürlich schon.
Das "Problem" ist das mit dem Formeln.
Ich möchte gerne, dass die Zellen die Formeln enthalten aber eben keine Werte NICHT vom Makro erfasst werden.
Weist Du, wie ich das meine?
Gruß
Ingo

AW: Kann ich nicht nachvollziehen
17.11.2015 10:39:50
Daniel
Hi
Zellen, die Formeln enthalten, haben IMMER einen Wert.
Auch das Formelergebnis Leerstring "" ist ein Wert und zwar ein Textwert.
wenn die Zellen Formeln enthalten könntest du meine Methode anwenden.
du müsstest die Formeln so abändern, dass sie nicht den Leerstring als Ergebnis ausgeben, sondern stattdessen einen Wahrheitswert.
im Makro lautest die Zeile mit WITH dann:
With Columns(2).SpecialCells(xlcelltypeformulas, 3)

der Rest bleibt gleich.
Gruß Daniel

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 10:59:17
Michael
Hallo Ingo und Daniel!
Daniel hat, wie gewohnt, Recht und auch präzise beschrieben.
Dennoch hier noch eine andere Idee meinerseits, wie Du nur "optisch" gefüllte Zellen zufällig wählst, obwohl alle Zellen im Bereich "gefüllt" sind, da sie Formeln enthalten:
Sub ZufallsZeile()
Dim Letzte As Long
Do
With ActiveSheet
Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(WorksheetFunction.RandBetween(1, Letzte), 2).Select
End With
Loop Until ActiveCell.Text  ""
End Sub
Ist aber wirklich nur eine Idee - bei großen Bereichen ist das wohl nicht immer sinnvoll.
LG
Michael

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 11:07:13
Ingo
Hallo Daniel
Das mit den Formeln und den Werten wusste ich nicht.
Meine Formel schaut so aus:
=WENN(B268="";"";VERKETTEN("http://example.org/produkte/";KLEIN(B268);".php"))
Erreichen möchte ich damit einfach nur, dass die Zellen der entsprechenden Spalte quasi leer "aussehen", wenn in Spalte B kein Wert ist.
Könnte man den Zufalls-Code nicht so machen?
Wenn ich Spalte B kein Wert ist, springe zu einer Zufallszeile in Spalte 28.
Also quasi so, dass das Makro nur die Zeilen erfasst, in dessen Spalte B kein Wert ist.
Gesprungen soll dann aber eben zur Zelle in Spalte 28.
Gruß
Ingo

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 11:27:00
Michael
Hallo Ingo!
Ich habe das Gefühl, wir müssen an unserer Kommunikation arbeiten...
Könnte man den Zufalls-Code nicht so machen?
Wenn ich Spalte B kein Wert ist, springe zu einer Zufallszeile in Spalte 28.

Davon war bisher nicht die Rede bzw. hab ich das so nicht verstanden.
Aber dennoch:
Sub ZufallsZeile()
Dim Letzte As Long
Dim Zufall As Integer
With ActiveSheet
Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
Do
With ActiveSheet
Zufall = WorksheetFunction.RandBetween(1, Letzte)
.Cells(Zufall, 28).Select
End With
Loop Until ActiveSheet.Cells(Zufall, 2).Text  ""
End Sub
Passt?
LG
Michael

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 11:41:48
Daniel
HI
selektieren würde ich erst, wenn die Zeile gefunden ist:
Sub ZufallsZeile()
Dim Letzte As Long
Dim Zufall As Long
With ActiveSheet
Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
Do
Zufall = WorksheetFunction.RandBetween(1, Letzte)
Loop Until ActiveSheet.Cells(Zufall, 2).Text  ""
.Cells(Zufall, 28).Select
end with
End Sub
und wenn "letzte" Long ist, dann sollte auch "Zufall" Long sein.
Integer kann man als Datentyp mittlerweile vergessen. Es hat gegenüber Long keine Vorteile, nur den Nachteil des kleineren Datenbereichs.
Gruß Daniel

Anzeige
AW: Kann ich nicht nachvollziehen
17.11.2015 11:45:14
Michael
Servus!
selektieren würde ich erst, wenn die Zeile gefunden ist:
Absolut! Daran hab ich in der Schnelle gar nicht wirklich gedacht...
und wenn "letzte" Long ist, dann sollte auch "Zufall" Long sein.
Ja, auch ;-)
Integer kann man als Datentyp mittlerweile vergessen.
Schöne Parabel auf die Entwicklungen im IT-Bereich, oder? Andererseits: old Habits die hard...
Danke für die Ergänzung - jetzt bin ich noch auf Ingos Rückmeldung gespannt.
Schönen Tag
Michael

AW: Kann ich nicht nachvollziehen
17.11.2015 11:51:11
Ingo
Hallo Michael und Daniel
Ja was soll ich sagen. So klappt es nun SUPER!
Bitte entschuldigt, dass ich mir das mittendrin nochmal anders überlegt habe.
Wie immer bin ich natürlich begeistert über die nette und schnelle Hilfe hier von Euch.
TOLL
Gruß
Ingo

Anzeige
AW: Danke für die nette Rückmeldung! owT Michael
17.11.2015 12:19:13
Michael

AW: Zufällige Zeile anspringen
17.11.2015 08:54:41
Daniel
Hi
so werden nur Zellen ausgewählt, die auch befüllt sind, dh auch Leerzellen zwischendrin werden nicht verwendet.
Hier für den Fall, dass in Spalte B nur feste Werte stehen und keine Formeln
Sub ZufallsAuswahlVonZellenMitInhalt()
Dim ar As Long
Dim c As Long
With ActiveSheet.Columns(2).SpecialCells(xlCellTypeConstants)
ar = WorksheetFunction.RandBetween(1, .Areas.Count)
c = WorksheetFunction.RandBetween(1, .Areas(ar).Cells.Count)
.Areas(ar).Cells(c).Select
End With
End Sub
Gruß Daniel

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige