4.6k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo,

ich habe in Spalte "A" verschiedenen Einträge A, B, C,....Dabei können einzelne Buchstaben mehrfach in den jeweiligen Zeilen auftreten. ich möchte die maximale Anzahl eines Auftretens und den jeweiligen Buchstaben ermitteln - also z.B. "D" ist am häufigsten mit 22 Duplikaten aufgetreten...
Hat jemand eine Idee?
Gruß
Andreas

17 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all .-)

noch ein wenig optimiert :-)

gruss nighty

Sub GrößteBuchstabe()
Dim Dat(26) As Integer, ZellG As Integer, VarIndexG As Integer, Buchst As Integer
Dim zelle As Variant
Dim Bereich As Variant
Bereich = Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row)
For Each zelle In Bereich
For Buchst = 1 To Len(zelle)
Dat(Asc(UCase(Mid(zelle, Buchst, 1))) - 64) = Dat(Asc(UCase(Mid(zelle, Buchst, 1))) - 64) + 1
If Dat(Asc(UCase(Mid(zelle, Buchst, 1))) - 64) > ZellG Then
ZellG = Dat(Asc(UCase(Mid(zelle, Buchst, 1))) - 64)
VarIndexG = Asc(UCase(Mid(zelle, Buchst, 1)))
End If
Next Buchst
Next zelle
Range("B1") = Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZß", VarIndexG - 64, 1) & Str(ZellG)
End Sub
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo nighty,

super, funktioniert einwandfrei!!!!!
Habe aber noch eine Variante, bei der du vlt. auch helfen kannst: wie müßte der Code aussehen, wenn in Spalte "A" nicht Buchstaben sondern Texte stehen?
Gruß
Andreas
0 Punkte
Beantwortet von
Hallo Andreas,

alternativ kannst du auch deine Eigene Formel schreiben. Dazu einfach in einem beliebigen Modul folgendes einfügen.

Public Function ZählenWennMax(Bereich As Range)

Dim Vorh As String

g = Application.WorksheetFunction.CountA(Bereich)

Do
i = i + 1
inh = Bereich.Cells(i)
anz = Application.WorksheetFunction.CountIf(Bereich, inh)

If anz > m Then
m = anz
a = inh
End If

If anz = m And InStr(1, a, inh) = 0 Then a = a & "/" & inh

If inh = "" Then
ges = ges + 1
leer = leer + 1
End If

If InStr(1, Vorh, inh) = 0 Then
Vorh = Vorh & inh & ";"
ges = ges + anz
End If
Loop Until ges = g + leer Or ges = Bereich.Cells.Count

MsgBox i

ZählenWennMax = a

Danach einfach in Excel z.B. =ZählenWennMax(A1:A1500) eingeben.


Die letzte Makrozeile lässt sich auch austauschen um andere Werte zurückzugeben.
'ZählenWennMax = a ' gibt das/die am häufigsten vorkommende Zeichen bzw. Texte zurück
'ZählenWennMax = m 'gibt das höchste Vorkommen zurück
'ZählenWennMax = Vorh 'gibt alle vorh. Einträge je einmal zurück
'ZählenWennMax = UBound(Split(Vorh, ";")) 'gibt zurück, wie viele verschiedene Einträge mindestens einmal vorkommen.
0 Punkte
Beantwortet von
Die Zeile Msgbox i am Ende des Makros kannst du natürlich weglassen. Die war nur für den Test! :-)
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Andreas,

zitat:
wie müßte der Code aussehen, wenn in Spalte "A" nicht Buchstaben sondern Texte stehen


Das ginge auch mit den Formeln aus AW7!

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Andreas,

Ein Beispiel für die von mir bevorzugte Pivottabelle, die auch bei Doppel- und Mehrfachgleisigkeiten alle Begriffe anzeigt, im Gegensatz zu den Formellösungen (AW7).

>Spalte A Datenbereich mit Überschrift markieren
>Pivottabelle erstellen
>aus der PivotTable Feldliste>erst Zeilenbereich>dann Datenbereich hinzufügen
>anschließend den gelb markierten Teil des Ergebnisses absteigend sortieren

Hatte ich seinerzeit vergessen zu posten.

http://www.file-upload.net/download-9169046/Kopie_H--ufig.xls.html


Gruß

Paul1
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo Paul1,

danke für deinen Tipp!!!
Gruß Andreas
...