Microsoft Excel

Herbers Excel/VBA-Archiv

Zählenwenn zweidimensionales Array

Betrifft: Zählenwenn zweidimensionales Array von: SteffenS
Geschrieben am: 22.03.2016 15:56:35

Hallo,

ich habe folgendes Problem, wo ich noch keine Lösung gefunden habe und darum Eure Hilfe brauche.

Und zwar habe ich ein zweidimensionales Array mit 4 Spalten.
In der vierten Spalte möchte ich gern die Häufigkeit der Werte in Spalte 3 Zählen.

Wie kann ich dies erreichen.
Mein aktueller Ansatz ist bis jetzt:

For i = LBound(spArray) To UBound(spArray)
spArray(k, 1) = aArray(i) 'Wert
spArray(k, 2) = Mid(aArray(i), 2, 2)
spArray(k, 3) = Mid(aArray(i), 5, 5)
spArray(k, 4) = Application.WorksheetFunction.CountIf(spArray(1, 1), spArray(k, 3))
Next i

Danke Euch schon mal.

VG Steffen Schmerler

  

Betrifft: Bin weiter aber habe noch eine Frage von: SteffenS
Geschrieben am: 22.03.2016 16:39:40

Hallo Zusammen,

ich habe es jetzt bis hierher geschafft:

Dim tmpAray As Variant
tmpArray = Application.WorksheetFunction.Index(spArray, 0, 3)

For i = LBound(spArray) To UBound(spArray)
If spArray(i, 1) <> "" Then
spArray(i, 4) = Application.WorksheetFunction.CountIf(tmpArray, spArray(i, 3))
End If
Next i

Leider erscheint bei der Ausführung immer die Meldung Objekt erforderlich.
Was mache ich falsch.

VG SteffenS


  

Betrifft: tmpArray ist kein (Range-)Objekt! Gruß owT von: Luc:-?
Geschrieben am: 22.03.2016 19:04:16

:-?


  

Betrifft: was meinst Du von: SteffenS
Geschrieben am: 23.03.2016 09:23:14

Hallo,

was meinst Du mit der Antwort, stehe irgendwie auf Schlauch.
Was kann ich tun damit es funktioniert

Danke nochmal
VG SteffenS


  

Betrifft: CountIf benötigt zwingend einen Bereich ... von: Luc:-?
Geschrieben am: 23.03.2016 10:51:41

…als 1.Argument, Steffen,
kein Variant-Datenfeld, wenn nicht gewährleistet ist, dass es ZellBezüge enthält.
Ansonsten siehe Rudis AW!
Luc :-?

Besser informiert mit …


  

Betrifft: AW: Zählenwenn zweidimensionales Array von: Rudi Maintaire
Geschrieben am: 23.03.2016 10:00:29

Hallo,
das würde ich so machen:

Sub aaa()
  Dim arr, oC As Object, i As Long

  arr = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Offset(, 2))
  ReDim Preserve arr(1 To UBound(arr), 1 To 4)
  Set oC = CreateObject("scripting.dictionary")

  For i = 1 To UBound(arr)
    'Spalte 3 zählen
    oC(arr(i, 3)) = oC(arr(i, 3)) + 1
  Next

  For i = 1 To UBound(arr)
    'Anzahl eintragen
    arr(i, 4) = oC(arr(i, 3))
  Next

  'Mach weiter
End Sub

Gruß
Rudi


  

Betrifft: Danke von: SteffenS
Geschrieben am: 23.03.2016 13:27:58

Mit der Lösung von Rudi hat es funktioniert.

Vielen lieben Dank schon mal.

VG SteffenS


 

Beiträge aus den Excel-Beispielen zum Thema "Zählenwenn zweidimensionales Array"