Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
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

Längste alphabetische Reihe in Worten

Längste alphabetische Reihe in Worten
16.02.2019 18:59:36
Tom
Guten Abend,
das Forum hat mir schon sehr oft bei kniffligeren Fragen zu Excel geholfen, nun hätte ich aber eine spezielle Frage und hoffe, dass jemand dazu eine Lösung hat.
Ich habe eine lange Liste mit vielen Begriffen und hätte jetzt gerne jenen herausgefunden, der die längste alphabetische aufsteigende Reihe innerhalb des Begriffes hat.
Die Auswertung würde ich mir so vorstellen ...
Aber = 2, weil a und b hintereinander
AAber = 2
Mmabcde = 5
Abcdefg = 7
Es sind leider auch Begriffe mit Bindestrich enthalten, kann man das auch lösen?
Ab-cd = 4
Vielen herzlichen Dank im voraus.

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

Betreff
Datum
Anwender
Anzeige
AW: Längste alphabetische Reihe in Worten
18.02.2019 16:40:50
Daniel
Hi onur
schau dir mal die Ergebnisse an, wenn der Text ein "z" enthält.
Gruß Daniel
Genaue Definition von aufsteigend...
16.02.2019 19:33:32
aufsteigend...
fehlt Tom,
Muss die Zählung aufsteigend ohne oder mit Lücken erfolgen?
Beispiel:
Begriffsdefinition 3 ohne Lücken
Begriffsdefinition 5 mit Lücken
also bitte Anforderung genauer definieren!
Gruess Hansueli
Anzeige
die Definition liegt vor
17.02.2019 00:48:56
WF
er schrieb Aber=2
also nicht 4
WF
AW: Längste alphabetische Reihe in Worten
17.02.2019 22:37:14
fcs
Hallo Toni,
per Formellät sich das nur mit Hilfsspalten und/oder komplexen Matrix-Formeln lösen.
Deswegen hier eine Lösung mit benutzerdefinierter VBA-Funktion bzw. Makro.
LG
Franz
Option Explicit
'Code in einem allgemeinne Modul der Datei
Public Function fncABC_max(varTexte As Variant, Optional a_Start As Boolean = True, _
Optional bolAnzahl As Boolean = False) As Variant
'varTexte = Zellbereich oder Daten-Array mit den auszuwertenden Texten
'a_Start  = wenn WAHR (True), dann werden nur Zeichenfolgen berücksichtigt, die mit a" oder "A"  _
beginn
'bolAnzahl = wenn WAHR wird die max. Länge der Zeichenkette als Ergebnis angezeigt, sonst die  _
Texte mit _
der längsten Zeichenkette
'Formel-Beispiele
'Zeichenfolgen beginnend mit "a", "A"
'=fncABC_max(A1:B5)
'=fncABC_max(A1:B5;WAHR;WAHR)
'beliebige Zeichenfolgen
'=fncABC_max(A1:B5;FALSCH)
'=fncABC_max(A1:B5;FALSCH;WAHR)
Dim a_max As Integer, iZeichen As Integer
Dim varItem
Dim varTest, strErgebnis As String
Dim iLen As Integer, bolA As Boolean
Dim sAlt As String, sNeu As String
strErgebnis = ""
For Each varItem In varTexte
varTest = LCase(varItem)
sAlt = ""
sNeu = ""
iLen = 0
bolA = False
If a_Start = True Then
'nur Zeichenfolgen berücksichtigen, die mit "a" oder "A" beginnen
For iZeichen = 1 To Len(varTest)
sNeu = Mid(varTest, iZeichen, 1)
Select Case Asc(sNeu)
Case Asc("a") To Asc("z")
If a_Start = True And sNeu = "a" Then
iLen = 1: bolA = True
ElseIf sAlt = "" Then
iLen = 1
Else
If Asc(sNeu) - Asc(sAlt) = 1 And bolA = True Then
iLen = iLen + 1
Else
iLen = 0
bolA = False
End If
End If
If iLen > a_max Then
a_max = iLen: strErgebnis = varItem
ElseIf iLen = a_max And InStr(strErgebnis, varItem) = 0 Then
strErgebnis = strErgebnis & ", " & varItem
End If
sAlt = sNeu
Case Asc("-")
'diese Zeichen bei Auswertung überspringen
Case Else
sAlt = "": iLen = 0: bolA = False
End Select
Next
Else
'beliebige Zeichenfolgen berücksichtigen
For iZeichen = 1 To Len(varTest)
sNeu = Mid(varTest, iZeichen, 1)
Select Case Asc(sNeu)
Case Asc("a") To Asc("z")
If sAlt = "" Then
iLen = 1
Else
If Asc(sNeu) - Asc(sAlt) = 1 Then
iLen = iLen + 1
Else
iLen = 1
End If
End If
If iLen > a_max Then
a_max = iLen: strErgebnis = varItem
ElseIf iLen = a_max And InStr(strErgebnis, varItem) = 0 Then
strErgebnis = strErgebnis & ", " & varItem
End If
sAlt = sNeu
Case Asc("-")
'diese Zeichen bei Auswertung überspringen
Case Else
sAlt = "": iLen = 0
End Select
Next
End If
Next
If bolAnzahl = True Then
fncABC_max = a_max
Else
fncABC_max = strErgebnis
End If
End Function
'Makro-Beispiel
Sub prcLaengsteKette_A1_B5()
Dim varText
varText = fncABC_max(ActiveSheet.Range("A1:B5"), a_Start:=True)
MsgBox "Text mit längster Zeichenfolge beginnend mit A oder a:" & vbLf & varText
varText = fncABC_max(ActiveSheet.Range("A1:B5"), a_Start:=False)
MsgBox "Text mit beliebiger längster Zeichenfolge:" & vbLf & varText
End Sub

Anzeige
AW: Längste alphabetische Reihe in Worten
18.02.2019 15:12:44
Tom
Lieber Franz (fcs)
vielen herzlichen Dank für die Mühe. Das werde ich demnächst gleich einmal versuchen. Dankeschön.
AW: Längste alphabetische Reihe in Worten
18.02.2019 15:15:50
onur
Und was gefällt dir an MEINER Version nicht?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige