Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Listbox nach Kriterien füllen
#11
Es gibt in der Tabelle doch keine Werte >200 und <1000 ??!!??
Antworten Top
#12
Hallo,

Tut mir Leid an alle die sich mühe hier geben, aber mich nicht ganz verstehen, weil ich mich nicht ganz verständlich ausgedrückt habe.
Nächstes mal mach ich es von Anfang an ausführlicher und verwirre weniger Leute.


Also die Kriterien sollen im Rahmen sein der mindest und maximal Gewicht Spalten.

Kriterium1: 300
Kriterium2: 6000

Dann Passt nur ein Ergebnis das wäre:


3.   Hersteller               Typ                      min. Gewicht       max.  Gewicht

8.   Noviak                  110 x 150             220                         6250

Kriterium1: 300 ist größer als 220 und Kriterium2: 6000 ist kleiner als 6250.


z.B. Passt dieser nicht weil Kriterium1: 300 nicht größer als 900 ist, obwohl Kriterium2: 6000 kleiner als 9550 ist.

3.   Hersteller               Typ                      min. Gewicht       max.  Gewicht

9.   Noviak                  150 x 140             900                         9550

Somit wäre die logische Schlussfolgerung:

Kriterium1 > Spalte (min.Gewicht)  & Kriterium2 < Spalte (max. Gewicht)


Gruß Joe
Antworten Top
#13
Hallo Joe,

wenn Du alle Zeilen min mit allen Zeilen max vergleichst, dann wird das wohl nicht so werden, wie Du es möchtest

Code:
For i = 4 To letzteZeileD
If Worksheets("Tabellen").Cells(i, 4) <= Kriterium1 Then
For a = 4 To letzteZeileE
If Worksheets("Tabellen").Cells(a, 5) >= Kriterium2 Then
...

Wenn Du z.B. snb's Code anschaust, hast Du dort eine Schleife und min und max wird in einer If-Zeile verglichen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Guten Morgen,

ich habe mich an die Lösung von snb nochmal herangewagt. Problem ist nur das die Auswahl die übrig bleibt, nicht stimmt.

z.B. Kriterium1: 160
      Kriterium2: 2800

Sollte = Fettgedruckt
Ist = Rot

         B (Spalte 2)           C (Spalte 3)          D (Spalte 4)              E (Spalte 5)
3.   Hersteller               Typ                      min. Gewicht       max.  Gewicht
4.   Noviak                  50 x 50                 150                         1750          
5.   Noviak                  70 x 70                 150                         2900    <- Sollte, Ist = Passt
6.   Noviak                  90 x 90                 150                         5000    <- Sollte 
7.   Noviak                  120 x 120             220                         5400         <- Ist
8.   Noviak                  110 x 150             220                         6250         
9.   Noviak                  150 x 140             900                         9550         
10. Marchios               50 x 50                 175                         1400         
11. Marchios               70 x 70                 175                         2350         <- Ist
12. Marchios               90 x 90                 175                         4750



Code:
With ListBox1
    .ColumnCount = 2
    .ColumnWidths = "100;100"
    .ColumnHeads = False
End With


Dim j As Long
Dim Kriterium1 As Range
Dim Kriterium2 As Range
Set Kriterium1 = Worksheets("Tabelle1").Range("F13") 'minimal Wert
Set Kriterium2 = Worksheets("Tabelle1").Range("F15") 'maximal Wert


    ListBox1.List = Tabelle2.Cells(4, 4).CurrentRegion.Value

    For j = ListBox1.ListCount - 1 To 0 Step -1
       If ListBox1.List(j, 4) <= Kriterium1 Or ListBox1.List(j, 5) >= Kriterium2 Then ListBox1.RemoveItem j
    Next
   

Wäre nett wenn Ihr mein Code korrigieren könntet.

Gruß Joe
Antworten Top
#15
Hallo Joe,

wenn Die Werte 300 für das Minimum und 6000 für das Maximum immer noch stehen, sollte Deine Listbox eigentlich leer sein.

Außer 9. ist alles kleiner als das Minimum und würde daher raus fallen. 9. fällt aber auch raus, weil der zweite Wert größer als das Maximum ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#16
Hallo André,

bei den Werten bleibt nur 8. übrig.
Die Werte aus der Minimum Spalte sollten kleiner sein als das Kriterium 1 und die Werte aus der Max. Spalte sollten größer sein als Kriterium 2.
Kriterium 1&2 sollte quasi in den Bereich passen min bis max.

Außerdem habe ich vergessen die Datei hochzuladen, sorry.

Gruß Joe


Angehängte Dateien
.xlsm   Liste_Kriterien.xlsm (Größe: 33,63 KB / Downloads: 13)
Antworten Top
#17
Hallo,

nehme mal in der Tabelle 'Tabellen' zwei Hilfsspalten her und füge in der ersten folgende Formel ein.

PHP-Code:
=WENN(F4<=Tabelle1!$F$13;"x";""

und die Formel für die zweite lautet

PHP-Code:
=WENN(G4>=Tabelle1!$F$15;"x";""

Ziehe die Formel soweit runter, wie Du sie brauchst. Und jede Zeile, in der ein "x" in einer der beiden Spalten steht, wird im Code gelöscht. Nur die Zeilen, in der kein X steht bleiben erhalten. Passe also die Bedingung so an, wie Du sie brauchst.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#18
Hallo an Alle,

Danke Stefan für den Tipp!

Ich habe jetzt eine Hilfspalte, die zeigt für jede Zeile den Wert 0 wenn es nicht passt und den Wert 1 wenn es passt.
Das macht das ganze einfacher denke ich.

Jetzt hab ich zwei Codes probiert, die beide nicht funktionieren.

Der erste Code soll genau die Werte in die Liste packen die passen, sprich da wo die 1'en sind.


Code:
Dim letzteZeileI As Long
letzteZeileI = Worksheets("Tabellen").Range("I100").End(xlUp).Row 'gibt die letzte Zeile wieder die nicht leer ist

'Leert die ListBox
ListBox1.Clear

For i = 4 To letzteZeileI
 If Worksheets("Tabellen").Cells(i, 9) = 1 Then

 'Die Liste wird durch die Werte gefüllt die nach den Kriterien passen

        ListBox1.AddItem
        ListBox1.List(ListBox1.ListCount - 1, 0) = wks.Cells(i, 2).Value
        ListBox1.List(ListBox1.ListCount - 1, 1) = wks.Cells(i, 3).Value

End If
Next

Der zweite Code packt genau die aus der Liste die nicht passen.

Code:
Dim j As Long

   ListBox1.List = Tabelle2.Cells(4, 2).CurrentRegion.Value

    For j = ListBox1.ListCount - 1 To 0 Step -1
       If ListBox1.List(j, 9) = 0 Then ListBox1.RemoveItem j
    Next

Wäre nett wenn ihr mir sagen könntet wo meine Fehler sind.

Gruß  Joe


Angehängte Dateien
.xlsm   Liste_Kriterien.xlsm (Größe: 35,1 KB / Downloads: 3)
Antworten Top
#19
Hallo Joe,

Dreh- und Angelpunkt sind halt deine Bedingungen die Du uns nicht so erklären kannst, dass wir dir die passende Lösung präsentieren können. Trage mal in deiner Datei manuell ein, welche Zeilen gelöscht werden sollen und welche nicht.

Nach meiner Auffassung ist deine Formel in der Hilfsspalte falsch. Sie müsste so

Code:
=WENN(ODER(D$4<=Tabelle1!$F$13;Tabellen!E$4>=Tabelle1!$F$15);1;0)

lauten.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#20
Hallo Stefan,

Tut mir Leid. Ich weiß nicht wie ich, das sonst erklären soll.
 
Beispiel, die in der Tabelle gelisteten Werte präsentieren Waagen.
In der min. Spalte stehen die Werte ab welchem Gewicht die Waage misst. z.B. fängt die Waage erst bei 150kg an zu messen, Kriterium 1 = 250 kg passt weil 250 kg größer ist als 150 kg und er das messen kann.
In der max. Spalte stehen die Werte bis welchem Gewicht die Waage misst. z.B. hört die Waage auf bei 2900 kg an zu messen, Kriterium 2= 3000 kg kann die nicht messen und somit fällt die Waage Noviak 70 x 70 raus, obwohl Kriterium 1 passt.

Kriterium 1 sagt aus welches geringste Gewicht auf die Waage kommt und Kriterium 2 sagt aus welches größte Gewicht auf die Waage kommt.

zB. Kriterium 1=250 kg
     Kriteirum 2 =3000 kg

Alle rot makiereten sind die richtigen "Waagen".


         B (Spalte 2)           C (Spalte 3)          D (Spalte 4)              E (Spalte 5)
3.   Hersteller               Typ                      min. Gewicht       max.  Gewicht
4.   Noviak                  50 x 50                 150                         1750                   <- passt nicht, weil der nur bis 1750 kg messen kann, aber Kriterium 2 = 3000 kg ist
5.   Noviak                  70 x 70                 150                         2900                   <- passt nicht, weil der nur bis 2900 kg messen kann, aber Kriterium 2 = 3000 kg ist
6.   Noviak                  90 x 90                 150                         5000         
7.   Noviak                  120 x 120             220                         5400         
8.   Noviak                  110 x 150             220                         6250         
9.   Noviak                  150 x 140             900                         9550                   <- passt nicht, weil der nur ab 900 kg messen kann, aber Kriterium 1 = 300 kg ist
10. Marchios               50 x 50                 175                         1400                   <- passt nicht, weil der nur bis 1400 kg messen kann, aber Kriterium 2 = 3000 kg ist
11. Marchios               70 x 70                 175                         2350                   <- passt nicht, weil der nur bis 2350 kg messen kann, aber Kriterium 2 = 3000 kg ist
12. Marchios               90 x 90                 175                         4750


Somit ist meine Hilfsspalte schon richtig.

Wenn noch was unklar ist, sagt mir das ruhig, ich werde mich bessern.

Gruß Joe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste