Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

assoziative Arrays (Dictionary) überschreiben

assoziative Arrays (Dictionary) überschreiben
30.12.2007 17:38:00
Marcel
Hallo zusammen
Habe eine Frage zu assoziative Arrays (Dictionary)?
Kann ich ein bereits existierenden Eintrag in einem Dictionary überschreiben?
Also, ich möchte eine Liste durchsuchen und im Dictionary die Anzahl pro Jahr eintragen. So ähnlich wie in angehängtem Makro. Nur funktioniert das Marko nicht!
Danke und einen Schönen Abend
Gruss Marcel

Sub DictionaryTest()
Dim dictAnzahl As Dictionary
Dim Jahr As Long
Set dictAnzahl = New Dictionary    ' assoziative Arrays (Dictionary) mit Anzahl pro Jahr
Cells(Range("A1").Row + 1, 1).Activate
For Jahr = 1950 To 2100
dictAnzahl.Add Jahr, 0
Next Jahr
' *** in "ActiveCell" steht das Jahr zu welchem eins dazu gezählt werden soll
Do While ActiveCell.Row 


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: assoziative Arrays (Dictionary) überschreiben
30.12.2007 19:22:00
Erich
Hallo Marcel,
versuchs mal mit
dictAnzahl(ActiveCell.Value) = dictAnzahl(ActiveCell.Value) + 1
statt
dictAnzahl.Add ActiveCell.Value, dictAnzahl(ActiveCell.Value) + 1
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: assoziative Arrays (Dictionary) überschreiben
30.12.2007 19:52:11
Marcel
Hallo Erich aus Kamp-Lintfort
Besten Dank für den Imput!
Funlktioniert prima besten Dank
Gruss Marcel

AW: assoziatives Array (Dictionary)
30.12.2007 19:55:00
Erich
Hallo Marcel,
warum legst du Dict-Einträge vorab für alle möglichen Jahre an?
Dann könnstest du das auch einfacher mit einem normalen Array mit
Dim Anz(1950 to 2100) as Long machen. Dann reichte Anz(activecell) = Anz(activecell) + 1
Es ginge auch so:

Sub DictionaryTest2()
Dim dictAnzahl As Dictionary, zz As Long, lngJ As Long
Set dictAnzahl = New Dictionary  ' assoziatives Array (Dictionary) mit Anzahl pro Jahr
For zz = 2 To Cells(Rows.Count, 1).End(xlUp).Row
lngJ = Cells(zz, 1)
If dictAnzahl.Exists(lngJ) Then
dictAnzahl(lngJ) = dictAnzahl(lngJ) + 1
Else
dictAnzahl.Add lngJ, 1
End If
Next zz
MsgBox "Anzahl Jahre: " & dictAnzahl.Count
For zz = 0 To dictAnzahl.Count - 1
MsgBox dictAnzahl.Keys(zz) & " : " & dictAnzahl(dictAnzahl.Keys(zz))
Next zz
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: assoziatives Array (Dictionary)
30.12.2007 20:38:00
Marcel
Hallo Erich
Weswegen ich es so mache fragst du dich! Weiss es eigentlich nicht so genau. Bin Anfänger und habe Vorlagen so zusammengewürfelt, das es ging....
Was richtig ist oder nicht kann ich nicht sagen und würde ich mir auch nie anmuten zu machen!!
Aber eben die ganze Übung ist vielleicht sowieso nur dazu, dass ich etwas gelernt habe. Denn das Ergebnis kann ich so glaube ich nicht erreichen!!
Wollte einen String so erstellen, dass ich damit ein Diagramm füttern kann! Geht aber nicht macht bei zu wenig Datensätzen schlapp!!
- Oder kann mir jemand helfen? -
Gruss Marcel
strJahr =
1950;1951;1952;1953;1954;1955;1956;1957;1958;1959;1960;1961;1962;1963;1964;1965;1966;1967;1968;1969;1970;1971;1972;1973;1974;1975;1976;1977;1978;1979;1980;1981;1982;1983;1984;1985;1986;1987;1988;1989;1990;1991;1992;1993;1994;1995;1996;1997;1998;1999;2000;2001;2002;2003;2004;2005;2006;2007;2008;2009;2010
strAnzahl =
0;0;0;0;0;0;0;0;0;1;1;1;2;0;2;3;1;3;4;3;3;6;4;7;9;7;2;7;4;3;6;2;2;4;4;4;1;2;2;2;2;1;2;2;2;3;1;5;2;1;0;5;5;1;5;4;1;11;0;0;0
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Formula = "=SERIES(,{" & strJahr & "},{" & strAnzahl & "},1)"
ActiveChart.Deselect

Anzeige
AW: Dictionary - Nachfrage
30.12.2007 20:02:00
Gerd
Hallo Erich! Hallo Marcel!
Set MyDic = CreateObject("Scripting.dictionary")
Ist so 'ne Instanzierung in Excel 2003 nicht mehr erforderlich ?
Grüße Gerd

AW: Dictionary - Nachfrage
30.12.2007 20:08:31
Erich
Hi Gerd,
beides geht. Mit Dim wird ja auch eine Instanz erzeugt.
Das Dictionary mit CreateObject anzulegen, hat wohl den Vorteil,
dass man den Verweis auf die MS Sripting Runtime nicht setzen muss.
Ich habe übrigens "nur" XL2002 (XP).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Dictionary - Nachfrage
30.12.2007 20:12:00
Gerd
Hallo Erich,
danke für die Erläuterung.
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige