DatenbankManufaktur

Anwendungen so individuell wie Ihr Unternehmen   –   Office- und VBA-Erfahrung seit 1995

Excel-Funktion Verbinden()

Diese benutzerdefinierte Funktion setzt die Inhalte von gefüllten Felder eines festgelegten Bereichs zusammen und fügt jeweils ein Trennzeichen ein.

Anforderung:

Aus mehreren (nicht immer gefüllten) Spalten soll eine Kapitelnummerierung (z. B. 1. bis 1.2.3.4.) zusammengesetzt werden.

Lösung:

Mit VERKETTEN und vielen WENNS oder mit einem geschickten Einsatz von VERKETTEN, GLÄTTEN und WECHSELN wäre das Problem zu lösen. Aber jede kleine Änderung (z. B. eine andere Spaltenanzahl) ist mit viel Handarbeit verbunden und fehleranfällig. Auf Dauer einfacher und fexibler ist eine kleine benutzerdefinierte Funktion. Mit ihr lassen sich z. B. auch IP-Adressen oder Artikelnummern zusammensetzen.

Die Funktion Verbinden() einsetzenZum Vergrößern auf das Bild klicken

So sieht die fertige Funktion aus:

Function Verbinden(Bereich As Range, Optional Trennzeichen As String = ".", _
                   Optional Zeichen_am_Ende As Boolean = True) As String
'=====================================================================================
' Eine benutzerdefinierte Funktion aus Raphael Heins Da|ten|bank|Ma|nu|fak|tur
'
' Benutzung:    Eingabe im Tabellenblatt "=Verbinden(A1:K1;"-";WAHR)
' Funktion:     Verkettet die gefüllten Felder und fügt ein Trennzeichen ein, das auf
'               Wunsch auch am Ende angehängt bzw. weggelassden wird
'
' Parameter:    - Bereich (ein einzeiliger, zusammenhängender Bereich beliebiger Länge,
'                 z. B. A1:F1)
'               - Trennzeichen (ein oder mehrere Zeichen, in Anführungszeichen,
'                 z. B. "-", optional, Standardwert ".")
'               - Trennzeichen am Ende ausgeben? (WAHR oder FALSCH, optional,
'                 Standardwert WAHR)
'
' Autor:        Raphael Hein
' Datum:        01.07.2014
'=====================================================================================
   Dim strText As String
   Dim i As Integer
   
   ' Funktion immer neu berechnen, wenn sich etwas im Tabellenblatt ändert
   Application.Volatile
   
   ' Der Bereich, der verbunden wird, muss zusammenhängend in einer Zeile stehen
   If Bereich.Rows.Count > 1 Or Bereich.Areas.Count > 1 Then
      Verbinden = "#BEREICH!"
   Else
      ' Texte und Trennzeichen zusammensetzen
      For i = 1 To Bereich.Columns.Count
         strText = Cells(Bereich.Row, Bereich.Column + i - 1)
         ' nur Zellen verwenden, die nicht leer sind
         If strText <> "" Then Verbinden = Verbinden & strText & Trennzeichen
      Next i
      ' Ggf. ein (oder mehrere) letzte Trennzeichen entfernen
      If Not Zeichen_am_Ende Then
         Verbinden = Left(Verbinden, Len(Verbinden) - Len(Trennzeichen))
      End If
   End If
   
End Function

Diese Funktion arbeitet natürlich auch in Excel:mac. Eine Arbeitmappe mit der Funktion, Beispielen und Erklärungen gibt es für Sie zum Download.

Sie wissen nicht, was eine benutzerdefinierte Funktion ist und wie man sie erstellt? Dann erkläre ich es Ihnen hier kurz.

[ Download ]  [ nach oben ]