Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1324to1328
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

Modus bilden Mit VBA

Modus bilden Mit VBA
16.08.2013 10:25:11
Max
Guten Morgen
Ich versuche eine Statistik zu analysieren und müsste den Modus bilden, also alle gleichen Werte zusammenfassen und die Anzahl anzeigen.
Jedoch gelingt mir es nicht die Werte in die verschiedenen Zeilen der Spalte zu schreiben, sondern alles wird in eine Zeile getan, was bei über 3000 Werten recht unübersichlich ist.
Hier mein code:
Sub Anzahl2()
Dim vVal As Variant, vRes() As Variant
Dim rng As Range
Dim lngI As Long
Dim strMsg As String
Set rng = Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
vVal = rng
ReDim vRes(0)
vRes(0) = "###"
For lngI = 1 To UBound(vVal, 1)
If Not IsNumeric(Application.Match(vVal(lngI, 1), vRes, 0)) Then
strMsg = strMsg & vVal(lngI, 1) & vbTab & vbTab & Application.CountIf(rng, vVal(lngI, 1) _
) & vbLf
ReDim Preserve vRes(UBound(vRes) + 1)
vRes(UBound(vRes)) = vVal(lngI, 1)
End If
Next
If Len(strMsg) > 0 Then
ActiveSheet.Range("D2:D3051") = strMsg
End If
End Sub
Wäre super wenn mir jemand helfen könnte.
Es soll dann so aussehen:
In spalte D werden die gleichen Werte angezeigt und daneben in Spalte E wie oft sie vorkommen.
Gruß Max

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modus bilden Mit VBA
16.08.2013 11:19:30
Doris
Hallo Max,
probier es mal damit.
Sub P_Zählen()
' Zeilen_Zahl    = anzahl der belegten Zeilen im Tabellenblatt'
' Zählen Werte in Spalte D    erfolgt über Formel        =ZÄHLENWENN(D:D;D2)'
Dim Zeilen_Zahl As Integer
Zeilen_Zahl = Cells(Rows.Count, "D").End(xlUp).Row
'                                   Formel Anzahl Werte in Spalte
Range("E2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-1],RC[-1])"
 '                                   gesamte Spalte mit Formel auffüllen
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & Zeilen_Zahl)
Range("E2:E" & Zeilen_Zahl).Select
Application.CutCopyMode = False
Selection.Copy
End Sub
bringt Dir hoffentlich das gewünschte Ergebnis
Gruß Doris

Anzeige
AW: Modus bilden Mit VBA
16.08.2013 11:35:22
Max
Hallo Doris
Danke für deine schnelle Antwort!
Aber leider funktioniert der Code nicht. Er gibt immer Null als Wert zurück.
Entweder hab ich deinen Code falsch eingebaut oder es liegt direkt am Code. Ich erkläre nocheinmal was ich genau will:
Also In spalte C habe ich 3050 Werte.
Alle gleichen Werte sollen In Spalte D zusammengefügt werden und in Spalte E soll stehen wie oft diese Werte vorkamen.
Ich bin wirklkich ein absoluter Anfänger in VBA, also wäre es schön wenn du den Code für mich gleich in meinen Code, den ich gepostet habe einbauen könntest, oder mir sagtst, wo er genau hinsoll.
Gruß Max

Anzeige
AW: Modus bilden Mit VBA
16.08.2013 13:46:54
Doris
Hallo Max,
Sorry - Hatte Werte Spalte D gezählt. Hier die Korrektur der Formel
Sub P_Zählen()
' Zeilen_Zahl    = anzahl der belegten Zeilen im Tabellenblatt'
' Zählen Werte in Spalte C    erfolgt über Formel        =ZÄHLENWENN(C:C;C2)'
Dim Zeilen_Zahl As Integer
Zeilen_Zahl = Cells(Rows.Count, "C").End(xlUp).Row
'                                   Formel Anzahl Werte in Spalte
Range("E2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-2],RC[-2])"
'                                   gesamte Spalte mit Formel auffüllen
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & Zeilen_Zahl)
Range("E2:E" & Zeilen_Zahl).Select
Application.CutCopyMode = False
Selection.Copy
End Sub
Klappt jetzt hoffentlich. Wenn nicht lade einfach ein Bsp. hoch.
Eine Frage habe ich aber noch.
Und wie willst Du in Spalte D die Werte aus C zusammenfügen ? Das versteh ich nicht ganz.
Gruß doris

Anzeige
AW: Modus bilden Mit VBA
16.08.2013 11:22:58
Doris
Hallo Max ,
probier's mal damit
Sub P_Zählen()
' Zeilen_Zahl    = anzahl der belegten Zeilen im Tabellenblatt
' Zählen Werte in Spalte D    erfolgt über Formel        =ZÄHLENWENN(D:D;D2)'
Dim Zeilen_Zahl As Integer
Zeilen_Zahl = Cells(Rows.Count, "D").End(xlUp).Row
'                                   Formel Anzahl Werte in Spalte
Range("E2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-1],RC[-1])"
'                                   gesamte Spalte mit Formel auffüllen
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & Zeilen_Zahl)
Range("E2:E" & Zeilen_Zahl).Select
Application.CutCopyMode = False
Selection.Copy
End Sub

Klappt hoffentlich
Gruß Doris

Anzeige
AW: Modus bilden Mit VBA
16.08.2013 11:27:18
Doris
Sorry,
jetzt habe ich es zweimal abgeschickt. Gibt aber keinen Unterschied.
Doris

Mal als Formel
16.08.2013 11:52:01
JACKD
Hallo Max
Vielleicht ja auch interessant (Und ja es ist (leider) eine volatile Funktion dabei :-P



Tabelle1
 BCDEF
1  A Wert A Wert 4 
2  B Wert B Wert 3 
3  C WertC Wert5 
4  A Wert D Wert1 
5  A Wert      
6  B Wert      
7  C Wert     
8  C Wert     
9  C Wert     
10  A Wert      
11  B Wert      
12  C Wert     
13  D Wert     
14         

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
E1:E4=ZÄHLENWENN($C:$C;D1)   =COUNTIF(C3,RC[-1])
D1:D13{=WENNFEHLER(INDIREKT("C"&KKLEINSTE(WENN(ZÄHLENWENN(BEREICH.VERSCHIEBEN(C$1;;;ZEILE($1:$100) ) ;C$1:C$100) =1;ZEILE($1:$100) ) ;ZEILE(C1) ) ) ;"") }$D$1 =IFERROR(INDIRECT("C"&SMALL(IF(COUNTIF(OFFSET(R1C[-1],,,ROW(R1:R100) ) ,R1C[-1]:R100C[-1]) =1,ROW(R1:R100) ) ,ROW(RC[-1]) ) ) ,"")
{} Matrixformel mit Strg+Umschalt+Enter abschließen
Matrixformeln sind durch geschweifte Klammern {} eingeschlossen
Diese Klammern nicht eingeben!!


XHTML Tabelle für Darstellung in Foren,
einschl. Bedingter Formatierung ab Version 2007
XHTML-Version 11.26



Grüße

Anzeige
AW: Mal als Formel
16.08.2013 12:26:04
Max
Hallo JACKD
Danke dafür aber ich brauch die Lösung wirklich als VBA code da ich diesen Code für viele verschiedene Tabellen brauche und somit öfters anwenden will. Außerdem läuft alles in einem Analysecode später zusammen bei dem der Mittelwert und der Median auch noch bestimmt wird und da sollte dann alles auf einmal dabei sein.

AW: Modus bilden Mit VBA
16.08.2013 14:32:16
Doris
Hallo Max,
Sorry - Hatte Werte Spalte D gezählt. Hier die Korrektur der Formel
Sub P_Zählen()
' Zeilen_Zahl    = anzahl der belegten Zeilen im Tabellenblatt'
' Zählen Werte in Spalte C    erfolgt über Formel        =ZÄHLENWENN(C:C;C2)'
Dim Zeilen_Zahl As Integer
Zeilen_Zahl = Cells(Rows.Count, "C").End(xlUp).Row
'                                   Formel Anzahl Werte in Spalte
Range("E2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-2],RC[-2])"    '                                _
gesamte Spalte mit Formel auffüllen
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & Zeilen_Zahl)
Range("E2:E" & Zeilen_Zahl).Select
Application.CutCopyMode = False
Selection.Copy
End Sub
Klappt jetzt hoffentlich. Wenn nicht lade einfach ein Bsp. hoch.
Eine Frage habe ich aber noch.
Und wie willst Du in Spalte D die Werte aus C zusammenfügen ? Das versteh ich nicht ganz.
Gruß doris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige