Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In 2 Arrays gleiche Werte finden, Ausgabe in 3. Array

In 2 Arrays gleiche Werte finden, Ausgabe in 3. Array
21.09.2023 21:20:58
WilliExcel
Hi,

monatlich erhalte ich eine Excel-Liste.
Diese Excel-Liste zeigt, welche Vertragsnummern in diesem Monat aktiv benutzt wurde.
Vertragsnummern, welche nicht benutzt wurden, werden nicht angezeigt.

Ich möchte eine Sammel-Liste erstellen, in Spalte A werden sämtliche Verträge angezeigt.
In Spalte B (Jänner) soll neben dem entsprechenden Vertrag, wenn dieser aktiv war, ein „x“
gezeigt werden. In Spalte C (Februar) ebenso.

Schematisch soll es in etwa so aussehen:

Vertrag Jänner Februar März
A001 x x
A002 x x
A003
A004 x x x

Jedes mal, wenn es eine neue Monatsliste gibt, soll diese Sammel-Liste mit der neuen
Monatsliste aktualisiert werden.

Die Aktualisierung der Spalte A (falls ein neuer Vertrag dazukommt) ist gelöst.

In meiner Sprache, sage ich: vergleich von 2 Arrays (Spalte A mit Monatsliste), oder was sind die gleichen Werte (Vertrag) in 2 Arrays, etc.. Ich habe jede Menge an Beiträgen gefunden (Dictionary, transponieren, etc. etc), aber nichts hilft mir weiter,dass ich das „X“ in die korrekte Zelle (Schnittpunkt Vertrag / Monat) bekomme.

Was soll ich in Google eingeben ? Ich bin überzeugt, ich bin nicht der Erste, der dieses Problem hat, also wird es wohl Hilfestellungen in den diversen Foren geben, finden muss man es nur. Ohne richtige Fragestellung ist es ein wenig mühsam.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In 2 Arrays gleiche Werte finden, Ausgabe in 3. Array
22.09.2023 00:25:30
ralf_b
die neue liste in ein dictionary überführen/einlesen
dann jeden Eintrag der Sammelliste gegen das dictionary prüfen, und gegebenenfalls ein x setzen.

Sub test()


Dim dic As Object, rng As Range, colnr&

Set dic = CreateObject("Scripting.dictionary")
colnr = 2 ' Spalte B z.b. januar

For Each rng In Sheets("neueliste").UsedRange.Columns(1).Cells
dic.Add Key:=rng.Value, Item:=rng.Value
Next

For Each rng In Sheets("Sammelliste").Columns(1).Cells
If dic.exists(rng.Value) Then rng.Offset(, colnr - 1) = "x"
Next
End Sub
Anzeige
AW: In 2 Arrays gleiche Werte finden, Ausgabe in 3. Array
22.09.2023 05:39:31
WilliExcel
Guten Morgen,
vorerst einmal recht herzlichen Dank.
Der erste Test schaut schon einmal ganz gut aus.
lg Willi
AW: In 2 Arrays gleiche Werte finden, Ausgabe in 3. Array
25.09.2023 05:13:47
WilliExcel
Hi,

nicht nur der erste Test, sondern auf der 2., der 3. und die nachfolgenden Test haben funktioniert.

Offset wird übrigens im "Einstieg in VBA mit Excel" im ersten Kapitel und dann im zweiten Kapitel besprochen. Dürfte aber bei mir, durch die
vielen "flying high"-Lösungen irgendwie in Vergessenheit geraten sein. Ich musste über mich selbst lachen, als mir bewußt wurde, Offset habe ich
schon mal gehört.
Auf jeden Fall ein riesengroßes Dankeschön.
lg willi
Anzeige
danke für die Rückmeldung...
25.09.2023 07:04:36
ralf_b
... je nach dem wie groß die zu bearbeitende Datenmenge ist, könnte das Makro auch relativ langsam sein. Das liegt dann am Zugriff auf die Zellen in den Schleifendurchläufen.

Man könnte(muß aber nicht) die rng erst in ein Array einlesen und dieses dann durcharbeiten. Die Ergebnisse in ein Ergebnisarray schreiben und dieses mit einem Rutsch in die Tabelle zurückschreiben.


gruß

rb

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige