Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1232to1236
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

Array: Anzahl unterschiedlicher Werte in Spalte

Array: Anzahl unterschiedlicher Werte in Spalte
Marlon
Guten Morgen,
ich bräuchte mal wieder ein wenig Unterstützung von jemandem, der Arrays besser versteht als ich.
Ich möchte - eigenlicht ganz einfach - wissen, wie viele unterschiedliche Werte in den letzten 10
Werten einer Spalte vorkommen. Dazu die 10 Werte in einen Array packen - und wie gehts dann weiter?
Vielleicht kann mir da jemand weiterhelfen?
Danke,
Marlon
Formelvorschlag ...
12.10.2011 09:41:14
Matthias
Hallo
Vielleicht hilft ja schon eine Formel:
Tabelle1

 A
168
234
334
475
50
641
749
864
952
1069
1141
1236
1360
1465
158
1636
1723
1836
1955
2068
218

Formeln der Tabelle
ZelleFormel
A21{=SUMME(1/ZÄHLENWENN($A$11:$A$20;$A$11:$A$20))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias
Anzeige
brauche VBA
12.10.2011 09:46:50
Marlon
Danke Matthias,
ja, die Formel ist bekannt. Ich brauche aber eine VBA-Variante, bei der mit Array gearbeitet wird weil
ich riesige Datenmengen durcharbeiten muß.
Gruß,
Marlon
AW: Array: Anzahl unterschiedlicher Werte in Spalte
12.10.2011 10:06:04
Beverly
Hi Marlon,
nach folgendem Prinzip: Public Sub test() Dim objDictionary As Object Dim Bereich As Variant Dim lngZaehler As Long Dim arrDaten As Variant Set objDictionary = CreateObject("Scripting.Dictionary") With Worksheets("Tabelle1") Bereich = .Range("A1", .Range("A1").End(xlDown)) End With ' Schleife über alle Werte For lngZaehler = LBound(Bereich) To UBound(Bereich) ' Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist objDictionary(Bereich(lngZaehler, 1)) = 0 Next MsgBox objDictionary.Count End Sub


Anzeige
Jetzt noch Bereich aus Array definieren?
12.10.2011 10:19:47
Marlon
Danke Beverly,
das sieht klasse auf. Weit jenseits meines VBA-Horizonts.
Es gibt nur noch ein Problemchen: Ich wollte es einfach beschreiben und habe gesagt, ich möchte werte einer Spalte zählen.
Aber in wirklichkeit habe ich keine Spalte sondern bereits einen Array und möchte in DIESEM Array zählen, wie viel unterschiedliche Werte innerhalb der letzten 10 Zeilen/ Werte vorkamen.
Aber an der Stelle wo du mit Bereich = .Range("A1", .Range("A1").End(xlDown))
den Range für Bereich definierst, müßte ich
Bereich = .Range(MainInputArray(lngMainRow-1,1),MainInputArray(lngMainRow-9,1))
den Bereich definieren. Das funktioniert aber nicht. Wie macht man das denn?
Danke,
Marlon
Anzeige
AW: Jetzt noch Bereich aus Array definieren?
12.10.2011 10:33:14
Beverly
Hi Marlon,
nach diesem Prinzip:

Sub test()
Dim objDictionary As Object
Dim lngZaehler As Long
Dim MainInputArray As Variant
Set objDictionary = CreateObject("Scripting.Dictionary")
With Worksheets("Tabelle1")
MainInputArray = .Range("A1", .Range("A1").End(xlDown))
End With
' Schleife über alle Werte
For lngZaehler = LBound(MainInputArray) To UBound(MainInputArray)
' Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionary(MainInputArray(lngZaehler, 1)) = 0
Next
MsgBox objDictionary.Count
End Sub



Anzeige
AW: Jetzt noch Bereich aus Array definieren?
12.10.2011 10:48:13
Marlon
Hallo Beverly,
sehe ich das richtig, dass ich für die letzten 9 Werte aus dem Array statt Ubound Lbound
sowas machen kann:
For lngZaehler = MainInputArray(lngRow-9,1) To MainInputArray(lngRow-1,1)
objDictionary(MainInputArray(lngZaehler, 1)) = 0
Next lngZaehler
Danke,
Marlon
AW: Jetzt noch Bereich aus Array definieren?
12.10.2011 11:45:24
Beverly
Hi Marlon,
mein Code für LBound und UBound sieht anders aus. Außerdem würde ich die Schleife so schreiben:

For lngZaehler = UBound(MainInputArray)-9 To UBound(MainInputArray)



Anzeige
AW: Jetzt noch Bereich aus Array definieren?
12.10.2011 11:49:41
Marlon
Verstehe ich Dich richtig?
Wenn sich im MainInputArray 500000 Werte befinden und ich in meiner Schleife beispielsweise an Position
500 bin und die wissen will, wieviele unterschiedliche Werte sich an Position 490 bis 499 befinden, dann
soll ich das auch mit Ubound machen? ist Ubound(MainInputArray) dann nicht 500000?
AW: Jetzt noch Bereich aus Array definieren?
12.10.2011 12:27:52
Beverly
Hi Marlon,
du hast geschreiben, dass du die letzen 10 ermitteln willst - dafür habe ich den Code gepostet. Wenn du nur Teile zwischendurch prüfen willst, ist es logisch, dass du dann diese Zahlen als Beginn bzw. Ende der Prüfung angibst. Beachte dabei auch, ob dein Array bei 0 oder 1 beginnt - das musst du bei der Festlegung der Von-/Bis-Werte berücksichtigen.


Anzeige
Danke!
12.10.2011 12:35:10
Marlon
Ach so, alles klar.
Danke für die Geduld.
Marlon

375 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige