Verwaltet man in Excel verschieden Links und URLs und möchte in einer separaten Spalte den Domain-Namen extrahieren, dann bietet Excel leider keine fertige Formel dafür.
Ein denkbarer Anwendungsfall kann sein, dass man aus verschiedenen Internetadressen den Domainnamen bestimmen muss, um diesen dann in irgendeiner Art und Weise weiterzuverarbeiten, z.B. um den Gesamtanteil einer Domain in einem Diagramm darzustellen oder um andere Werte, die zu diesen Domainnamen gehören aufzuaddieren oder in einer Pivot-Tabelle darzustellen.
Prinzipiell gibt es zwei Möglichkeiten aus einer URL die Domain zu bestimmen. Einmal unter Verwendung von entsprechenden Excel-Formeln oder unter Verwendung von einer VBA-Funktion, die dann wie einer eigenständige Formel verwendet wird.
Excel-Formel Domainname aus Internetadresse (URL)
Man sieht es schon an nachfolgendem Bild. Die Excel-Formel ist ein kleines Monstrum; und es hat mich auch einiges an Zeit gekostet diese zusammenzubasteln.
Als Parameter, hier die Zelle A2, übergibt man nur die Url. Nachfolgend noch einmal die Formel zum Kopieren. Einfach “A2” ersetzen durch die Zelle in welcher sich die URL befindet.
=WENN(ISTZAHL(FINDEN("www.";A2)); TEIL(A2;FINDEN("www.";A2)+4;WENN(ISTZAHL(FINDEN("/";A2;FINDEN("www.";A2)));FINDEN("/";A2;FINDEN("www.";A2))-FINDEN("www.";A2)-4;LÄNGE(A2))); WENN(ISTZAHL(FINDEN("://";A2)); TEIL(A2;FINDEN("://";A2)+3;WENN(ISTZAHL(FINDEN("/";A2;FINDEN("://";A2)+3));FINDEN("/";A2;FINDEN("://";A2)+3)-FINDEN("://";A2)-3;LÄNGE(A2))); ""))
Was die Formel so komplex macht, ist, dass man verschiedende Varianten und Schreibweisen einer URL abfangen muss. So gibt es Internetadressen und Links, die mit http oder https beginnen. Manche Links beinhalten auch noch dass “www.“. Außerdem kann es Schreibweisen geben, bei welchen die URL direkt hinter dem Domainnamen endet und einen Backslash (“/”).
VBA Domain-Name aus URL bestimmen
Anhand der Excel-Formel zum Extrahieren des Domain-Namen kann man erkennen, dass die Formel durchaus schlecht zu warten ist, falls man mal Anpassungen vornehmen muss. Wenn man ein wenig mit Programmierung vertraut ist, dann ist eine passende VBA-Funktion durchaus besser zu lesen und zu verstehen und auch wesentlich flexibler bezüglich nachträglicher Anpassungen.
Eine solche VBA-Funktion kann man dann in seinem Tabellenblatt genauso wie eine Excel-Formel verwenden. In diesem Beispiel heißt die VBA-Funktion respektive Excel-Formel “GetDomainFromURL“. Dieser wird dann einfach die Zelle, hier im Beispiel “A2”, übergeben, in welcher die URL eingetragen ist.
Damit die Formel im Tabellenblatt auch funktioniert, muss man im VBA-Editor eine gleichnamige Funktion programmieren. Zum Überprüfen der Zeichenfolge verwenden wir hier die InStr-Funktion. Den nachfolgenden Code kann man sich direkt in den VBA-Editor kopieren.
Function GetDomainFromURL(ByVal url As String) As String
Dim domain As String
'Teilstring nach "://" ermitteln
If InStr(url, "://") Then
domain = Mid(url, InStr(url, "://") + 3)
End If
'prüfen, ob "www." enthalten ist und ggf. entfernen
If InStr(domain, "www.") Then
domain = Mid(domain, InStr(domain, "www.") + 4)
End If
'den hinteren Teil der URL entfernen
If InStr(domain, "/") Then
domain = Left(domain, InStr(domain, "/") - 1)
End If
GetDomainFromURL = domain
End Function
Den VBA-Editor kann man direkt mit der Tastenkombination “Alt+F11” öffnen oder man geht über das Menü “Enwicklertools“.
(Für den Fall, dass die Registerkarte “Entwicklertools” nicht zu sehen ist im Menüband von Excel, kann man diese über Datei ⇒ Optionen ⇒ Menüband anpassen ⇒ Hauptregisterkarten einblenden)
Im Visual-Basic-Editor fügt man dann eine neues Modul ein:
Und in dem neu angelegten Modul fügt man nun den oben dargestellten Code ein und klickt auf Speichern. Danach kann man die Funktion wie eine gewöhnliche Excel-Formel verwenden.