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

Forumthread: 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
Anzeige
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
Anzeige
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?
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anzahl unterschiedlicher Werte in einer Spalte ermitteln


Schritt-für-Schritt-Anleitung

Um die Anzahl unterschiedlicher Werte in einer Spalte in Excel zu zählen, kannst Du eine Array-Formel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle eine neue Tabelle oder öffne eine bestehende.

  2. Gib Deine Werte in eine Spalte ein, z.B. in die Spalte A.

  3. Wähle eine leere Zelle aus, in der das Ergebnis angezeigt werden soll.

  4. Gib die folgende Formel ein:

    =SUMME(1/ZÄHLENWENN(A:A, A:A))
  5. Bestätige die Eingabe mit STRG + SHIFT + ENTER, um die Formel als Array-Formel einzugeben. Excel wird die Formel in geschweifte Klammern {} setzen.

Diese Formel zählt, wie viele unterschiedliche Werte in der Spalte A vorhanden sind. Du kannst die Spalte anpassen, um die Anzahl unterschiedlicher Werte in einer anderen Spalte zu zählen.


Häufige Fehler und Lösungen

  • Formel gibt eine Fehlermeldung aus: Überprüfe, ob Du die Formel korrekt als Array-Formel eingegeben hast (mit STRG + SHIFT + ENTER).
  • Falsches Ergebnis: Stelle sicher, dass keine Leerzellen in der Spalte vorhanden sind, da diese das Ergebnis verfälschen können.
  • Excel-Version: Beachte, dass die Verwendung von Array-Formeln in älteren Excel-Versionen anders sein kann.

Alternative Methoden

Es gibt mehrere Methoden, um die Anzahl unterschiedlicher Werte in Excel zu zählen:

  1. Verwendung von VBA: Wenn Du mit großen Datenmengen arbeitest, kann die Verwendung von VBA effizienter sein. Beispiel:

    Public Sub CountUniqueValues()
       Dim objDictionary As Object
       Set objDictionary = CreateObject("Scripting.Dictionary")
       Dim Bereich As Variant
       Bereich = Range("A1:A100").Value ' Passe den Bereich an
    
       Dim lngZaehler As Long
       For lngZaehler = LBound(Bereich) To UBound(Bereich)
           If Not objDictionary.Exists(Bereich(lngZaehler, 1)) Then
               objDictionary.Add Bereich(lngZaehler, 1), Nothing
           End If
       Next lngZaehler
    
       MsgBox objDictionary.Count
    End Sub
  2. Pivot-Tabellen: Du kannst auch eine Pivot-Tabelle erstellen, um die unterschiedlichen Werte zu zählen. Füge die Spalte als Zeilenfeld hinzu und zähle die Werte.


Praktische Beispiele

  • Beispiel 1: Du hast folgende Werte in der Spalte A:

    A
    1
    2
    2
    3
    3
    4

    Die Formel =SUMME(1/ZÄHLENWENN(A:A, A:A)) gibt 4 zurück, weil es 4 unterschiedliche Werte gibt.

  • Beispiel 2: Wenn Du die letzten 10 Werte zählen möchtest, kannst Du die Formel anpassen:

    =SUMME(1/ZÄHLENWENN(A1:A10, A1:A10))

Tipps für Profis

  • Verwende UNIQUE in Excel 365: Wenn Du Excel 365 hast, kannst Du die Funktion UNIQUE verwenden, um schnell die unterschiedlichen Werte aufzulisten und zu zählen:

    =ANZAHL(UNIQUE(A:A))
  • Filter verwenden: Du kannst die Daten filtern und dann die Anzahl der sichtbaren Zellen zählen, um nur die unterschiedlichen Werte zu sehen.


FAQ: Häufige Fragen

1. Wie viele unterschiedliche Werte in einer Spalte Excel? Du kannst die Formel =SUMME(1/ZÄHLENWENN(A:A, A:A)) verwenden, um die Anzahl der unterschiedlichen Werte in einer Spalte zu ermitteln.

2. Wie kann ich die Anzahl unterschiedlicher Werte zählen, wenn ich Filter anwende? Verwende die Funktion SUBTOTAL, um die Anzahl der sichtbaren, gefilterten Werte zu zählen.

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