Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Eindimensionales Array mit Range("A1:B40000") bild

Eindimensionales Array mit Range("A1:B40000") bild
Peter
Hallo Forum
In den Spalten A und B sind je 40.000 Werte und ich möchte die Unikate in Spalte D ausweisen.
Wie bekomme ich den Range("A1:B40000") in ein eindimensionales Array eingelesen.
Bisher kopiere ich die Spalten untereinander (bis 65536 Zeilen) und lese die Werte dann ein...
aber bei je 40.000 geht das mit Excel 2003 nicht mehr.
Siehe mein Codebeispiel und Dateianhang.
Public Sub Unikate_mit_Dictionary()
Dim objDic As Object
Dim vIn, vIn1, vIn2, vOut
Dim i As Long, T As Double
T = Timer
With Tabelle1
.Range("D:D").ClearContents
vIn1 = .Range(.Cells(1, 1), .Cells(40000, 1)).Value
vIn2 = .Range(.Cells(1, 2), .Cells(40000, 2)).Value
End With
vIn = vIn1
'und hier meine Frage: Wie verbinde ich vIn = vIn1 + vIn2
'da ich in Excel 2003 keine 80.000 Zeilen habe hilft untereinander kopieren nicht
Set objDic = CreateObject("Scripting.Dictionary")
For i = LBound(vIn) To UBound(vIn)
objDic(CStr(vIn(i, 1))) = 0
Next
vOut = objDic.keys
With ThisWorkbook.ActiveSheet
.Range("D2").Resize(UBound(vOut) + 1) = WorksheetFunction.Transpose(vOut)
.Range("D1") = Timer - T
End With
Set objDic = Nothing
End Sub
https://www.herber.de/bbs/user/69605.xls
Gruß Peter
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Eindimensionales Array mit Range("A1:B40000") bild
16.05.2010 15:05:21
Peter
Hallo Bosko
Danke für Deine Antwort... und ja ich habe diesen Beitrag interessiert verfolgt.
Dabei ging es um Differenzen von zwei Spalten ich brauchte alle Unikate und die für wesentliche Problematik wie in Gottes Namen bekomme ich 2 x40.000 Werte in ein Array eingelesen.
Danke und Gruß
Peter
Anzeige
AW: Eindimensionales Array mit Range("A1:B40000") bild
16.05.2010 13:45:33
Christian
Hallo Peter,
die beiden Arrays einfach untereinander hängen...das wird so nicht funktionieren.
Aber du kannst ja gleich beide Spalten an das Array vIn übergeben:
        vIn = .Cells(1, 1).Resize(40000, 2).Value
und dann den Hash mit:
        For i = LBound(vIn) To UBound(vIn)
objDic(CStr(vIn(i, 1))) = 0
objDic(CStr(vIn(i, 2))) = 0
Next
füttern.
Gruß
Christian
Anzeige
Einfach genial...
16.05.2010 15:09:38
Peter
Hallo Christian
das funktioniert auf Anhieb...ich probiere jetzt schon einige Tage an dieser Lösung aber "Es ist vollbracht"
Vielen Dank
Peter
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige