Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Verschiedene Werte in einer Matrix zählen.
#1
Hallo.

Ich habe 2160 Zeilen und 4096 Spalten (die 4096. Spalte ist die Spalte "FAN").

Nun möchte ich zählen wie viele unterschiedliche Werte sich in diesem Bereich befinden.
In jedem Feld steht ein Wert und die Werte gehen von 0 - 65355.

Gruß und vielen Dank im Voraus.
Antworten Top
#2
Hallo,

so:

Code:
=SUMME((HÄUFIGKEIT(A2:FAN2160;A2:FAN2160)>0)*1)

Quelle: www.herber.de/excelformeln und bitte suchen ...
Gruß Atilla
Antworten Top
#3
Danke erstmal,

leider hängt sich bei mir Excel dann auf wenn ich die 8,8 Millionen Werte miteinander vergleichen will :/
Gibt's noch irgend eine ressourcensparendere Methode?
Antworten Top
#4
Hallo,

Du durchsuchst immerhin 8,8 Mio. Zellen! Könntest Du vielleicht VBA verwenden? Wenn ja, mache es mal so.

Code:
Sub prcZahlenzaehlen()
   Dim objDic As Object
   Dim rngZelle As Range
  
   Set objDic = CreateObject("Scripting.Dictionary")
  
   For Each rngZelle In Range("A2:FAN2160")
      objDic(rngZelle.Value) = 1
   Next rngZelle
   MsgBox objDic.Count
  
   Set objDic = Nothing
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hi,

oder so:

Code:
Sub UnikateErmitteln()
Dim objDic As Object
Dim zelle As Range
  
Set objDic = CreateObject("Scripting.Dictionary")
  
With ActiveSheet
    For Each zelle In .Range("A2:FAN2160")
    
    If Not objDic.Exists(zelle.Value) Then
        If IsEmpty(zelle.Value) = False Then
            objDic.Add zelle.Value, zelle.Value
        End If
    End If
  
    Next zelle
    
    MsgBox "Es befinden sich " & objDic.Count & " Unikate im Bereich."
End With

Set objDic = Nothing

End Sub

Gruß
Max
Antworten Top
#6
Bin ziemlicher Noob in VBA.

Steffl, du hast "End Sub" vergessen oder?

mit End Sub hats funktioniert, und es spuckt mir eine Zahl aus, danke!
Antworten Top
#7
Ahh mein Fehler, der Code ging ja noch weiter :P
Antworten Top
#8
Funktioniert beides, ich danke euch!
Antworten Top
#9
Hallo,

wobei ich bei den beiden VBA-Codes unterschiedliche Ergebnisse erhalte.

Bei diesem Tabellenaufbau

Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
1  
2ab
3ac
4a 
5b 
6  
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

gibt der Code von Steffl das Ergebnis 4 aus und der Code von Max das Ergebnis 3, wobei ich bei beiden Codes den Bereich auf A2:B10 geändert habe.
Gruß
Peter
Antworten Top
#10
Hallo Peter,

das liegt darn, dass der Code von Stefan auch Leerzellen berücksichtigt.
Auch wenn der TS schrieb, jede Zelle sei gefüllt, habe ich diese Prüfung
trotzdem noch mit eingebaut.

Da in Deinem Bereich auch Leerzellen enthalten sind, erhältst Du einen Treffer mehr.

Gruß
Max
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste