Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

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

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
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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige