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

Scritpting Dictionary

Scritpting Dictionary
27.02.2017 12:56:47
Nermin
Hallo Leute,
kann man die Begrenzung von 256 Items bei einem Scritpting Dictionary anheben oder komplett auflösen weil meine Tabelle in der Gesucht wird 44 x 114 = 5016 Einträge bzw. Items hat.
Bitte um Hilfe!
Excellente Grüße,
Nermin

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Scritpting Dictionary
27.02.2017 13:05:58
Rudi
Hallo,
die Begrenzung gibt es nicht.
Gruß
Rudi
AW: Scritpting Dictionary
27.02.2017 13:18:30
Nermin
Hey,
o.O ?! OK ich habe mich da ein bisschen reingelesen und da stand überall das würde vom RAM abhängen habe gedacht man kann das irgendwie umgehen und wenn ich meine Dictionary beobachte zeigt er mir immer nur 256 Items an also einen kleinen Ausschnitt aus der Tabelle, sobald der gesuchte Wert den Abschnitt übersteigt wird mir kein Wert wiedergegeben :(
Gruß,
Nermin
keine Vorstellung, ...
27.02.2017 13:21:39
Rudi
... was du veranstaltest.
AW: Scritpting Dictionary
27.02.2017 14:09:56
Nermin
Hey Anton,
Danke! Aber das kenne ich leider schon und hat nicht wirklich weitergeholfen. Ich tüftel mal.
GRUß,
Nermin
AW: Scritpting Dictionary
27.02.2017 15:05:03
Martin
Hallo Nermin,
ich arbeite sehr gern und viel mit Dictionarys mit teilweise über 10.000 Items, bislang gab es noch nie Probleme. Du kannst ja eine Schleife mit einem definierten Limit verwenden und abwarten, ob es mal zu einem Fehler kommt.
Viele Grüße
Martin
Scripting Dictionary Demo
27.02.2017 14:12:38
Michael
Hi,
Dir ist schon bewußt, daß mehrfache Werte vom Dictionary glattgebügelt werden?
Anbei ein Demo, das zu jedem Wert einen String mitführt, mit den Zellen (des Arrays in Spalte/Zeile, beginnend ab 1,1, egal, woher das Array gelesen wird) nämlich, die den Begriff enthalten.
Die erzeugten Testdaten enthalten im Schnitt 25% Leerstrings, so daß die Ausgabe für "" sehr lang ist: derart lange Strings kann VBA handeln, beim Schreiben ins Blatt wird er ab 1000nochwas Zeichen abgeschnitten.
Das Makro:
Option Explicit
Const sMax = 44, zMax = 114
Sub wegMit()
Sheets("Daten").Cells.Clear
Sheets("Ergebnis").Cells.Clear
Range("H4") = "Testwerte gelöscht"
Range("H5") = ""
End Sub
Sub WerteErzeugen()
Dim s&, z&, rMax&, r&, a
Sheets("Ergebnis").Cells.Clear
a = Sheets("Ergebnis").Range("A1").Resize(zMax, sMax)
Randomize
For s = 1 To sMax
For z = 1 To zMax
rMax = WorksheetFunction.RandBetween(0, 3)
For r = 1 To rMax
a(z, s) = a(z, s) & Chr(WorksheetFunction.RandBetween(65, 90))
Next
Next
Next
Sheets("Daten").Range("A1").Resize(zMax, sMax) = a
Range("H4") = "Testwerte erzeugt"
Range("H5") = ""
End Sub
Sub DicEinlesen()
Dim o As Object, oW, a, s&, z&
If Range("H4")  "Testwerte erzeugt" Then MsgBox "keine Werte": Exit Sub
Set o = CreateObject("scripting.dictionary")
a = Sheets("Daten").Range("A1").Resize(zMax, sMax)
For s = 1 To sMax
For z = 1 To zMax
o(a(z, s)) = o(a(z, s)) & "|" & s & "," & z
Next
Next
' damit sind alle mehrfachen Begriffe eindeutig erfaßt und stecken in o (Dict. )
' a ist damit erledigt und kann für die Ausgabe verwendet werden:
ReDim a(1 To o.Count, 1 To 2)
z = 0
For Each oW In o.keys
z = z + 1
a(z, 1) = oW
a(z, 2) = o(oW)
Next
Set o = Nothing
Sheets("Ergebnis").Range("A1").Resize(z, 2) = a
Range("H4") = z & " Werte im Dictionary"
Range("H5") = "aus " & sMax * zMax & " Werten gesamt."
End Sub

Die Datei: https://www.herber.de/bbs/user/111798.xlsm
Schöne Grüße,
Michael
Anzeige
AW: Scritpting Dictionary
27.02.2017 14:54:06
Nermin
Hey Leute!
Habs hinbekommen, scheiterte primär an der Variablendeklaration, kurze Anpassung danach lief es wie am schnürchen :)
Excellente Grüße,
Nermin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige