Zelle in Sparte B in ufälliger Zeile markieren

Bild

Betrifft: Zelle in Sparte B in ufälliger Zeile markieren
von: Ingo Siemon
Geschrieben am: 17.04.2015 11:55:39

Hallo
Ich habe eine Excel-Tabelle mit aktuelle ca. 700 Zeilen.
Ich möchte per Makro in Spalte B eine zufällige Zeile markieren.
Es soll also z.B. sozusagen einfach nur z.B. B347 oder B18 oder B[...] markiert werden.
So, als wenn ich dort mit der Maus hin klicke.
Es sollen dabei nur die gefüllten Zeilen berücksichtigt werden.
Also die Zeilen, in denen in Spalte B auch ein Wert ist.
Zur Zeit sind das Zeile 2-712.
Das ändert sich aber immer wieder mal.
Das Makro soll also bei seiner Zufalls-Zeilen-Auswahl selbstständig gucken, dass nur die aktuelle gefüllten Zeilen berücksichtigt werden.
Ist sowas mit einem "einfachen" Makro überhaupt machbar?
Und wenn ja, gibt es da evtl. schon was fertigen?
Oder ist das eine extrem komplizierte Angelegenheit?
Gruß
Ingo

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Ingo Siemon
Geschrieben am: 17.04.2015 11:59:58
Ich hbe hier schon was gefunden:

Sub Zufall()
Dim ZZahl
Randomize
zzahl1 = Int((712 * Rnd))  'Zufallszahl wird ermittelt
i = "B" & zzahl1 'Das B wird davorgeschrieben
Range(i).Select 'Zufalls-Zelle wird ausgewählt
End Sub
Aber da muss ich im Code ja noch angeben (hier 712), welcher Bereich berücksichtigt werden soll.
Das Makro soll aber selber gucken, welche Zeilen in Spalte B einen Wert haben und eben nur diese bei der Zufallsauswahl berücksichtigen.
Könnt Ihr mir helfen, dass in dem Code noch zu ergänzen?

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Alexander
Geschrieben am: 17.04.2015 12:12:08
Hallo Ingo
probier mal das

Sub ZufaelligeZelle()
Dim lngZahl As Long
Dim lngRow As Long
    'letzte beschriebene Zeile ermitteln
    lngRow = Cells(Rows.Count, 2).End(xlUp).Row
    'Zufallszahl generieren
    lngZahl = Int((lngRow * Rnd) + 1)
    'Ueberpruepfen ob in der Telle was steht und ob die
    'Zufallszahl ungleich 1 ist
    If Not Cells(lngZahl, 2).Value = "" _
        And lngZahl <> "1" Then
    'Zelle auswaehlen
    Cells(lngZahl, 2).Select
    End If
End Sub
Gruß
Alex

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Ingo Siemon
Geschrieben am: 17.04.2015 12:30:34
Hallo Alex
Oh ja vielen Dank.
Das funktioniert super.
Aber ich fürchte, ich habe da doch noch einen Denkfehler gemacht.
Könnte man noch folgende Bedingung ergänzen?
Zusätzlich zu der bisherigen Bedingung bezüglich Spalte B sollen nur die Zeilen berücksichtigt werden, bei denen in Spalte Q der Wert ungleich "A" ist.
Geht das?
Oder macht das die Sache jetzt womöglich doch extrem kompliziert?
Gruß
Ingo

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Daniel
Geschrieben am: 17.04.2015 12:50:42
Hi
probiers mal so (für beide Bedingungen, Zelle nicht leer und in Spalte Q kein "A")

Dim Zeile as long
Do 
    Zeile = Worksheetfunction.RandBetween(2, Cells(Rows.Count, 2).end(xlup).Row)
    if Cells(Zeile, 2).Value <> "" then If Cells(Zeile, "Q") <> "" then Exit Do
Loop
Cells(zeile, 2).activate
der Code produziert solange Zufallszahlen, biss eine passende Zelle gefunden wird (achtung, Endlosschleife möglich, wenn es keine passende Zelle gibt).
Weitere Bedingungen kannst du mit zusätzlichen IFs hinzufügen.
Gruß Daniel

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Ingo Siemon
Geschrieben am: 17.04.2015 13:37:50
Wunderbar ... perfekt ... vielen Dank Euch beiden für die tolle und schnelle Hilfe!!!

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Ingo Siemon
Geschrieben am: 19.04.2015 12:56:55
Hallo Daniel
Nun habe ich doch nochmal eine Frage zu Deinem Code.
Und zwar eine Verständnis-Frage.
An welcher Stelle im Code wird denn geprüft ob in Spalte Q kein "A" ist?
Ich kapiere das irgendwie nicht.
Oder liegt da evtl. ein Fehler vor?
Gruß
Ingo

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Alexander
Geschrieben am: 19.04.2015 13:22:38
Hallo Ingo, hallo Daniel,
Der Vergleich Spalte A und Q sollte wohl so aussehen.
Dim Zeile as long
Do
Zeile = Worksheetfunction.RandBetween(2, Cells(Rows.Count, 2).end(xlup).Row)
if Cells(Zeile, 2).Value <> "" then If Cells(Zeile, "Q") <> Cells(Zeile, "A") then Exit Do
Loop
Cells(zeile, 2).activate
@Daniel: ich habe mir erlaubt dir vorzugreifen.
Gruß
Alex

Bild

Betrifft: AW: Zelle in Sparte B in ufälliger Zeile markieren
von: Daniel
Geschrieben am: 20.04.2015 14:11:13
ist OK.
ich bin ja auch nicht immer da oder habe lust zu antworten und dann ist es ja gut, wenn der Fragesteller trotzdem eine Antwort bekommt.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zelle in Sparte B in ufälliger Zeile markieren"