acrysis
Goto Top

Mehrere Werte aus großer Liste anzeigen

Hi

Moin @ all,

ich habe eine Problem & zwar habe ich eine Liste die sich durch Formulare füllt, allerdings möchte ich das wenn in Spalte G kein X steht, aber in Spalte B eine Nummer, das er mir die ausgibt, sverweis schön und gut allerdings gibt er mir da immer nur den 1. Wert aus ohne X, da die Liste von 16-6000 geht, möchte ich keine so riesen Liste sondern es gibt maximal 12 Werte ohne X mit ausgefüllter B Spalte. Ich dachte zuerst an ein Button den ich drücke worauf er per VBA abfragt in welcher Zeile etwas steht und kein X in Spalte G ist damit er dann mir den Wert aus Spalte B also Messagebox ausgibt, allerdings habe ich keine Ahnung wie ich das per VBA oder Formel realisieren kann.

Mfg Acrysis

Content-Key: 180492

Url: https://administrator.de/contentid/180492

Printed on: April 24, 2024 at 14:04 o'clock

Member: bastla
bastla Feb 14, 2012 at 11:22:37 (UTC)
Goto Top
Hallo Acrysis!

Da Du leider Deine Kiste nicht näher beschreibst, unterstelle ich mal, dass es in Spalte A in jeder Zeile einen Eintrag gibt (bzw, dass die Liste endet, wenn in Spalte A kein Inhalt vorhanden ist) und dass die Daten ab Zeile 2 zu finden sind - in diesem Fall könnte das in VBA etwa so gehen:
Sub FindeWerte()
ZeileVon = 2
SpalteLfd = "A"  
Spalte1 = "B"  
Spalte2 = "G"  

Zeile = ZeileVon
Do Until Cells(Zeile, SpalteLfd).Value = ""  
    If Cells(Zeile, Spalte1).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte1).Value  
    Zeile = Zeile + 1
Loop
MsgBox Mid(Ausgabe, 3), vbInformation + vbOKOnly, "Ergebnisse"  
End Sub
Grüße
bastla
Member: Acrysis
Acrysis Feb 14, 2012 at 13:29:58 (UTC)
Goto Top
Meine Kiste sieht so aus:

Ein Formular wird geöffnet, man trägt daten ein und es wird von Spalte A - F reingeschrieben, mit dem 2. Formular beendet man den Vorgang und es wird ein X in Spalte G geschrieben. Dadurch wird die Fahrt beendet.

Da ja nun allerdings mehrere Leute eine Fahrt eröffnen mit unterschiedlichen Benutzernummern (Spalte B), soll man per Messagebox am besten sehen können nachdem man auf einen Button geklickt hab welcher Benutzer die Fahrt noch nicht beendet hat, sprich solange Spalte A-F in einer Zeile vorhanden ist, allerdings in Spalte G noch kein X für die beendigung steht, sollen die Benutzernummern angezeigt werden.

so mein vorgehen
Member: Acrysis
Acrysis Feb 14, 2012 at 14:05:56 (UTC)
Goto Top
Hey bastla, das funktioniert super, wenn ich mehr Werte dazu nehme schmeißt er mir das direkt untereinander, kann ich das auch mit Bindestrich in einer Zeile haben, ab dem nächsten B wert die nächste Zeile in der Msg Box ?

bei mir sieht's nun so aus


Sub findewert()

ZeileVon = 16
SpalteLfd = "A"
Spalte1 = "B"
Spalte2 = "G"
Spalte3 = "O"
Spalte4 = "P"
Spalte5 = "Q"

Zeile = ZeileVon
Do Until Cells(Zeile, SpalteLfd).Value = ""
If Cells(Zeile, Spalte1).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte1).Value
If Cells(Zeile, Spalte3).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte3).Value
If Cells(Zeile, Spalte4).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte4).Value
If Cells(Zeile, Spalte5).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte5).Value
Zeile = Zeile + 1
Loop
MsgBox Mid(Ausgabe, 3), vbInformation + vbOKOnly, "Fahrender Picker"

End Sub
Member: bastla
bastla Feb 14, 2012 at 15:45:41 (UTC)
Goto Top
Hallo Acrysis!
kann ich das auch mit Bindestrich in einer Zeile haben
Dazu brauchst Du ja nur das Trennzeichen "Zeilenschaltung" (vbCrLf" durch das gewünschte Zeichen ersetzen, also etwa:
If Cells(Zeile, Spalte3).Value <> "" And Cells(Zeile, Spalte2).Value = "" Then Ausgabe = Ausgabe & " - " & Cells(Zeile, Spalte3).Value
Die Laufzeit wird ja vermutlich kein großes Thema sein, ließe sich aber etwas verbessern, wenn die Abfrage nach der Spalte G nur einmal erfolgt:
...
If Cells(Zeile, Spalte2).Value = "" Then  
    If Cells(Zeile, Spalte1).Value <> "" Then Ausgabe = Ausgabe & vbCrLf & Cells(Zeile, Spalte1).Value  
    If Cells(Zeile, Spalte3).Value <> "" Then Ausgabe = Ausgabe & " - " & Cells(Zeile, Spalte3).Value  
    If Cells(Zeile, Spalte4).Value <> "" Then Ausgabe = Ausgabe & " - " & Cells(Zeile, Spalte4).Value  
    If Cells(Zeile, Spalte5).Value <> "" Then Ausgabe = Ausgabe & " - " & Cells(Zeile, Spalte5).Value  
End If
...
Grüße
bastla
Member: Acrysis
Acrysis Mar 09, 2012 at 09:18:58 (UTC)
Goto Top
Moin, sorry das ich den Thread nochmal aufhole, aber ich habe 3 Spalten hinzugefügt und die Abfrage von neu abgefangen, allerdings funtkioniert es nun nicht mehr. Wenn ich auf den Button klicke bekomme ich eine leere Box.....:'(
Member: bastla
bastla Mar 09, 2012 at 09:49:52 (UTC)
Goto Top
Hallo Acrysis!

Da ja die Aufnahme in die Variable "Ausgabe" von 2 verschiedenen Zellen abhängt, müssen ggf auch beide Abfragen angepasst werden (was ganz nebenbei mit meinem zuletzt geposteten Vorschlag - also
If Cells(Zeile, Spalte2).Value = "" Then
vorweg - leichter zu realisieren sein sollte ...

Grüße
bastla