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

mit vba Min auf 2 Felder als Kombination mit 2 Bed

mit vba Min auf 2 Felder als Kombination mit 2 Bed
09.05.2016 21:06:54
Nikhil
Hallo Excel-VBA Kenner.
Nach längerer Pause benötige ich Hilfe.
Ich möchte per VBA in einer Tabelle "Quelle" mit 3 Spalten
die Zeile (mit den Feldinhalten) ermitteln, welche
den kleinsten Wert von 2 (kombinierten) Feldern "TAG" in Spalte B
und "ZEIT" in Spalte C hat.
Die Inhalte der beiden gesuchten (Min)Spalten sollen in 2 Variablen
strTag und strZeit gespeichert werden.
Dazu kommen noch 2 Bedingungen:
a) In Spalte A ("ZIEL_ID") wird eine bestimmte ID erwartet z. B. 38801460
b) Zeilen, die keinen Eintrag in dieser Spalte A haben, also leer sind,
dürfen nicht berücksichtigt werden.
------------------------------------------------------
Beispielwerte für die beiden manuell gefundenen Spalten:
20160307 (TAG, Spalte B) und 70000 (ZEIT, Spalte C) mit der Ziel_ID in Spalte A (38801460)
Das ist die gesuchte Zeile.
Die ähnliche Kombination
20160307 (Spalte B: "TAG") und 140000 (Spalte C: "ZEIT")
ist größer, soll also nicht getroffen werden, auch wenn die ZIEL_ID passen würde.
------------------------------------------------------
Eine winzige Excel-Datei habe ich hochgeladen.
https://www.herber.de/bbs/user/105472.xlsx
Die echte Datei kann über 300 000 Zeilen haben.
Im Code ist der Objektname für das Blatt Quelle "wsQuelle".
In der Variablen varZielId steht die Ziel_ID
Versuche, zumindest den kleinsten "Tag" zu ermitteln waren nicht erfolgreich.
Ein Ausschnitt meiner Versuche:
strTag = Evaluate("=MIN(IF((wsQuelle!A2:A" & lastRow & " = varZielId)*(wsQuelle!A2:A" & lastRow & "" ")), wsQuelle!B2:B" & lastRow & "))")
Zudem benötige ich als Ergebnis beide Felder: "Tag und Zeit"
Diese "Abfrage" würde dann mit unterschiedlichen ZIEL_IDs in einer Schleife ca. 70.000 mal laufen.
Kann mir jemand einen funktionierenden vba Code zukommen lassen?
Bin für jede Hilfe dankbar.
Vielen Dank und Gruss
Nikhil

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit vba Min auf 2 Felder als Kombination mit 2 Bed
09.05.2016 22:27:49
Fennek
Hallo,
auch nach 2x lesen bleiben einige Verständnisschwierigkeiten. Möchtest du für jeden Tag die früheste Uhrzeit?
Mögliche Ansätze:
1. Pivot-Tabelle mit Minimum per Tag
2. Min(wenn(...)); zuerst eine eindeutige Liste der Tage anlegen (Duplikate entfernen), dann mit =Min(wenn...)) für jeden Tag die kleinste Uhrzeit suchen.
mfg
(ungeprüft)

AW: mit vba Min auf 2 Felder als Kombination mit 2 Bed
10.05.2016 11:54:31
Nikhil
Hallo Fennek,
danke für Deine Antwort.
Das Ermitteln des kleinsten Datums (über 2 Felder kombiniert TAG & ZEIT) muss in einer
VBA-Schleife laufen.
Mit Blick auf die Tabelle ist es vermutlich verständlicher:
https://www.herber.de/bbs/user/105472.xlsx
Dort ist als Treffer-Beispiel die Zeile grün markiert.
Mit Pseudo-Code würde ich es so beschreiben:
In der Schleife mit Blatt "ZIEL":
- nimm die aktuelle ZIEL_ID aus dem Blatt "ZIEL" (z. B. "38801460")
- und schaue in der Tabelle QUELLE, welche Zeilen (evtl. mehrere) in Blatt "QUELLE" die gleiche ZIEL_ID in der Spalte A haben.
- nimm die gefundenen Sätze (evtl. mehrere) und ermittle darunter den Satz, der den kleinsten "TAG" hat (Spalte B in der Quelle)
- in diesen gefundenen Sätzen (evtl. mehrere) ermittle, welcher Satz (mit dem kleinsten Tag) auch noch die kleinste "ZEIT" hat (Spalte C in der Quelle).
- Zeilen, welche keine ZIEL_ID in der Spalte A (Quelle) haben, ignoriere.
Spalten "TAG" und "ZEIT" enthalten nur Strings, welche alphabethisch sortierbar sind.
Ich hoffe, es ist jetzt etwas verstaendlicher formuliert. Wenn nicht, bitte ich um Geduld.
Bin für jeden Tipp dankbar. Pivoterstellung oder manuellen Aktionen helfen nicht, da es per Code gemacht werden müsste.
Please help.
Viele Grüße
Nik

Anzeige
AW: mit vba Min auf 2 Felder als Kombination mit 2 Bed
10.05.2016 19:10:37
Werner
Hallo,
so wie ich das verstehe kannst du das doch mit dem Autofilter und mit sortieren lösen.
Erst deine Spalte mit der ID mit dem Autofilter filtern, Filterkriterium die ID aus dem Zielblatt. Dann das Ergebnis Spalte Tag aufsteigend, danach Spalte Zeit aufsteigend sortieren. Dann hast du deinen Treffer ganz oben und kannst damit weiter arbeiten.
Die ganze Aktion kannst du mit dem Makrorekorder aufzeichnen.
Gruß Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige