Array füllen mit doppelten

Bild

Betrifft: Array füllen mit doppelten
von: Timo
Geschrieben am: 21.08.2015 09:23:27

Hallo, ich habe folgenden Code, leider läuft er nicht ich vermute das Füllen mit dem Array funktioniert nicht, da ich nicht weiß wieviel doppelte er finden muss ich doch mit einem Zähler die Arraygröße anpassen oder ?
Bin um jeden Tipp dankbar


Sub DoppelteFinden()
Dim intr1 As Integer, intr2 As Integer, a() As Variant, inhalt As Variant
For intr1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row 
                                             
                                                    
    For intr2 = intr1 + 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(intr1, 1) = Cells(intr2, 1) Then
            i = i + 1
                a(i) = Cells(intr1, 1)
            End If
    Next intr2
Next intr1
End Sub

Bild

Betrifft: AW: Array füllen mit doppelten
von: Nepumuk
Geschrieben am: 21.08.2015 09:51:28
Hallo,
so?

Sub DoppelteFinden()
    Dim intr1 As Integer, intr2 As Integer, a() As Variant, inhalt As Variant
    Dim i As Long
    
    For intr1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        
        
        For intr2 = intr1 + 1 To Cells(Rows.Count, 1).End(xlUp).Row
            If Cells(intr1, 1) = Cells(intr2, 1) Then
                i = i + 1
                Redim Preserve a(1 To i)
                a(i) = Cells(intr1, 1)
            End If
        Next intr2
    Next intr1
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Array füllen mit doppelten
von: Timo
Geschrieben am: 21.08.2015 10:00:21
Ohne Worte......
ist doch einfach frustrierend (für mich).
Das sieht ganz gut aus, ich danke dir.!!!!!

Bild

Betrifft: AW: Array füllen mit doppelten
von: Matthias
Geschrieben am: 21.08.2015 10:00:37
Nutze folgenden Code um for deinem füllen des Arrays die Zahl der Einträge um eins zu erhöhen

ReDim Preserve a(UBound(a) + 1)
UBound (UpperBoundary) gibt dir die Obergrenze deines Arrays zurück.
Preserve sagt einfach nur dass deine Werte im Array erhalten bleiben bei der Neudefinition mit ReDim.
lg Matthias

Bild

Betrifft: DAs sieht mir ganz nach -.....
von: Jack_d
Geschrieben am: 21.08.2015 11:35:05
dem aus
https://www.herber.de/forum/messages/1443321.html
Auch wenn ich falsch liegen sollte Tim(o)
mit zufällig auch nur Basiskenntnissen und der Meinung das die Version keine Relavanz hat, und der gleichen Fragestellung.
Schau dir doch mal den Post von mir an der Stelle an.
https://www.herber.de/forum/messages/1443484.html
Grüße

Bild

Betrifft: AW: DAs sieht mir ganz nach -.....
von: Timo
Geschrieben am: 21.08.2015 12:17:31
Das sieht nicht nur so aus... Habe mir unten alle Tipps angesehen, bin auch dem Link gefolgt und habe mir jetzt, mit dem eingelesenen Wissen, diesen Code gebastelt. Hatte jetzt eben noch das Problem mit dieser Array-Zuordnung.
Hoffe die Tatsache dass ich einen neuen Post gemacht habe stößt dir nicht böse auf. War aber mehr Unbedachtheit als Böswilligkeit. Und ja mein Name ist Timo, (so bin ich auch Regist.) frag mich nicht warum unten ein O fehlt.
Da ich am Arbeitsplatz und Zuhause untersch. Excel Versionen nutze trage ich bei Version am liebsten keine Relevanz ein, kann mich aber zukünftig auf eine Version festlegen. Und wenn ich lese wie hier Probleme gelöst werden bzw wie hier Code umgesetz wird empfinde ich mein Wissen nur als kleiners Basiswissen, kann aber zukünftig gerne auch Anfänger oder sonst. eintragen.
War nicht Böse gemeint, bei mir ist der Weg das Ziel, bin deshalb auch immer dankbar viele Vorschläge zu erhalten um mir überall ein wenig abzuschauen.
Gruß

Bild

Betrifft: AW: DAs sieht mir ganz nach -.....
von: Jack_d
Geschrieben am: 21.08.2015 12:36:41
Das sieht nicht nur so aus... Habe mir unten alle Tipps angesehen,
Und hast du meinen Code auch mal angeschaut?
bin auch dem Link gefolgt und habe mir jetzt, mit dem eingelesenen Wissen, diesen Code gebastelt.
Vorbildlich. (Lernbereitschaft)
Hoffe die Tatsache dass ich einen neuen Post gemacht habe stößt dir nicht böse auf. War aber mehr Unbedachtheit als Böswilligkeit.
Es ist einfach unnötig. Wie soll ein potentieller (anderer Helfer) darauf aufbauen, bzw. passiert es so gut und gerne das Arbeit doppelt gemacht wird. Und das stöst (mir) böse auf.
Da ich am Arbeitsplatz und Zuhause untersch. Excel Versionen nutze trage ich bei Version am liebsten keine Relevanz ein, kann mich aber zukünftig auf eine Version festlegen.
Es geht darum das in verschiedenen Versionen verschiedene Dinge nicht funktionieren. Beispielsweise (um meinen Code aufzugreifen) funktioniert das Dictionary Objekt nicht bei Excel (2011) für Mac.

Und wenn ich lese wie hier Probleme gelöst werden bzw wie hier Code umgesetz wird empfinde ich mein Wissen nur als kleiners Basiswissen,

Das ist auch vollkommen richtig. Zumindest was ich von dir bisher gesehen hab (Wertungsneutral)
Ich hab auch nur Basiswissen, und wenn man manch andere sieht zB Rudi, Luc? oder Werner dann kann man fast sagen ich hab gar kein Wissen, aber ich wurschtel mich so durch.
Grüße

Bild

Betrifft: Zeit, Ansatz
von: Michael
Geschrieben am: 21.08.2015 18:28:17
Hi Timo,
ich hab mir Nepumuks Code mal geschnappt und ein bißchen aufgebohrt.
Durch geschickten Einsatz von Arrays geht es schon mal rund 24 mal so schnell.
Außerdem habe ich den Eindruck, daß Du so eine große Ausgabe gar nicht haben willst.
Aus 1009 Zeilen mit Testdaten (per Zufall gezogene Großbuchstaben) werden 19000 Zeilen Ausgabe (auch, wenn die Daten sortiert sind - zumindest, wenn sooo viele doppelt vorkommen)!
In der Variante -4 habe ich ein zweidimensionales Array verwendet, in dem in der "zweiten Spalte" jeder Wert, der bereits "angefaßt" wurde, mit false markiert und nicht erneut berücksichtigt wird. Dann sind es immerhin nur noch 983 Zeilen Ergebnis.
Die Variante -5 zählt schlicht.
Die Datei: https://www.herber.de/bbs/user/99768.xls
Spielerei, aber spiel mal damit, dann siehst Du, was Du am ehesten gebrauchen kannst.
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Array füllen mit doppelten"