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

Eindeutige Werte mit VBA (Liste)

Eindeutige Werte mit VBA (Liste)
10.11.2020 20:18:32
InProcess
Hallo zusammen,
ich habe mir eine Abfrage geschrieben mit der ich eine Tabelle durchlaufe und übereinstimmende Werte zählen möchte.
Ich kann die Daten leider nicht hochladen, hier ein Auszug:
Zeilen:
F = Laufende Bauteilnummer
D = Anlagenname
C= Bauteilentscheid
Ein Auszug:
Dim LastRow As Integer
Dim Zle As Integer
Dim Count_OK As Integer
Count_OK = 0
LastRow = Range("F65536").End(xlUp).Row
For Zle = 1 To LastRow
If Range("D" & Zle).Value Like "Bohrmaschine" And Range("C" & Zle).Value = "OK" Then
Count_OK = Count_OK+ 1
End If
Next
Das funktioniert soweit und ich bekomme alle Meldungen die an der Bohrmaschine OK waren als Zahlenwert. Allerdings kann es sein, dass ein Bauteil auch z.B. zweimal an der Bohrmaschine war, beides mit einer OK Meldung. (In meiner Datenquelle sehe ich dann die laufende Bauteilnummer zweimal. ) Ich möchte aber das es nur einmal gezählt wird, wie bekommt man sowas hin? Sowas wie „distinct“ bei sql? Ich hoffe ihr versteht mein anliegen.
Wie habe ich es sonst gemacht:
Ich habe eine PIVOT über die Datentabelle gelegt und mit Pivotdatenzuordnung gearbeitet. Dann gab es die Bauteilnummer zwei mal und ich habe mit ISTZAHL gearbeitet. Bei der Vielzahl an Daten ist es allerdings irgendwann recht langsam geworden und ich hoffe das VBA mir da eine schlankere Lösung (auch von den Anzahl der Hilfstabellen) hilft.
Vielen Dank, für Fragen bin ich allzeit bereit

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eindeutige Werte mit VBA (Liste)
10.11.2020 23:09:47
Tobias
Guten Abend,
versuchs mal mit:

Dim LastRow As Integer
Dim Zle As Integer
Dim Count_OK As Integer
Dim Coll_OK As New Collection
Dim bool As Boolean
Count_OK = 0
LastRow = Range("F65536").End(xlUp).Row
For Zle = 1 To LastRow
bool = False
If Range("D" & Zle).Value Like "Bohrmaschine" And Range("C" & Zle).Value = "OK" Then
'"Dreckige Prüfung ob Teilenummer in Collection vorhanden ist
On Error Resume Next
Coll_OK.Item (CStr(Range("F" & Zle)))
'Falls ein Fehler auftaucht bool = true => nummer ist noch nicht vorhanden
bool = CBool(Err.Number = 5)
On Error GoTo 0
'Nummer in Collection einpflegen und Zähler hochsetzen
If bool Then Coll_OK.Add Item:=Zle, Key:=CStr(Range("F" & Zle))
End If
Next
Count_OK = Coll_OK.Count
Debug.Print Count_OK
'Aufräumen
Set Coll_OK = Nothing
Bin mir nicht sicher wieviele Werte du hast, aber bei meinen Testwerten lief es ganz solide.
Schöne Grüße
Tobias
Anzeige
AW: Eindeutige Werte mit VBA (Liste)
10.11.2020 23:56:11
InProcess
Hallo Tobias,
auf den ersten Blick passt das! Aber meine Augen fallen langsam zu - melde mich morgen nochmal :)

245 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige