Wie kann ich aus einer Liste in Excel mit leads alle Nutzernamen (haben alle ein @) herausfiltern?

1 Antwort

Ich habe mir dazu vor ewiger Zeit zwei Funktionen (angelehnt an LISP) geschrieben: CAR() und CDR(). Damit wird das ein einfacher Aufruf. Angenommen der Text stünde in A1, dann wäre das 

=cdr(car(a1; "@");zeichen(34))

Die Funktion zeichen(34) ergibt die Anführungszeichen. In der Konstantenschreibweise wären das vier Anführungszeichen, was es unübersichtlich macht. 

PS: wenn das @-Zeichen gebraucht wird einfach vorne wieder dranpappen

="@" & cdr(car(a1; "@");zeichen(34))

Dann die Formel nach unten ziehen

Die Funktionsmakros in Excel anlegen: 

Entwicklertools - Makros - bei Makroname irgendwas eingeben - erstellen. 

Den Code unten reinkopieren (evtl. vorhandenes Sub-End Sub löschen) und als XLSM (XL mit Makro) speichern. 

' --- Allerweltsfunktionen ---

Function car(sString As String, sDelim As String) As String
 Dim i As Integer
 i = InStr(1, sString, sDelim, vbTextCompare)
 If i = 0 Then
  car = ""
 Else
  car = Trim(Left(sString, max(0, i - 1)))
 End If
End Function

Function cdr(sString As String, sDelim As String) As String
 Dim i As Integer
 i = InStr(1, sString, sDelim, vbTextCompare)
 If i = 0 Then
  cdr = ""
 Else
  cdr = Trim(Mid(sString, max(0, i + Len(sDelim))))
 End If
End Function

Function max(a As Variant, b As Variant) As Variant
 If a > b Then max = a Else max = b
End Function

Function Min(a As Variant, b As Variant) As Variant
 If a < b Then Min = a Else Min = b
End Function

Function LastCar(sString As String, sDelim As String)
 Dim i As Integer
 LastCar = ""
 For i = Len(sString) - Len(sDelim) To 1 Step -1
  If Mid(sString, i, Len(sDelim)) = sDelim Then
   LastCar = Mid(sString, i + 1)
   Exit For
  End If
 Next
End Function

PPS: 

Zur Erklärung (in Lisp) holt der CAR das erste Element einer Liste raus. Der CDR alles ohne das erste Element. Da wir in Excel keine Listen haben habe ich das so abgewandelt, dass man das Trennzeichen mit angeben muss. Was dann die Funktion recht universell einsetzbar macht. 

Woher ich das weiß:eigene Erfahrung

MrProcess  18.05.2023, 20:32

Nachtrag: in Lisp spricht man von dotted list oder dotted pair. Listen ist der falsche Begriff.

0