2016-05-24 7 views
-1

Benutzerdefinierte Verkettung in Excel. Ich muss in der Lage sein, mein eigenes Trennzeichen auszuwählen und einen Bereich von Zellen auszuwählen, die verkettet werden sollen. Gibt es dafür einen Codeblock?Benutzerdefinierte Excel-Verkettung

+2

In der neuesten Office 365 ist eine Formel TEXTJOIN(). –

+1

Wenn sich Ihre Daten in den Zellen A1 und B1 befinden, wie wäre es dann mit C1 '= A1 &" mycustomelimiter "& B1'? – PeterT

+0

Danke euch beiden! – Noah

Antwort

0

Dies könnte sein, was Sie dachten. Sie können den Bereich (horizontal oder vertikal) und ein benutzerdefiniertes Trennzeichen mit beliebiger Länge festlegen. Wenn Sie sich etwas einfallen lassen möchten, können Sie auch am Anfang jedes Strings einen Vortrenner hinzufügen.

Function CONCATRANGE(conc As Range, delim As String, Optional preDelim As String, Optional trailing As Boolean) 
Dim c 
Dim concformula As String 
For Each c In conc 
    If Not c.Value = "" Then 
     concformula = concformula & preDelim & c.Value & delim 
    End If 
Next 
If delim <> "" And trailing = 0 Then 
    concformula = Left(concformula, Len(concformula) - Len(delim)) 
End If 
CONCATRANGE = concformula 
End Function 
1

können Sie die Join() Funktion ausnutzen wie folgt:

für "1D" im Bereich

Function CUSTOMCONCAT1D(rng As Range, delim As String) 

If rng.Rows.Count > 1 Then 
    CUSTOMCONCAT1D = Join(Application.Transpose(rng), delim) 
Else 
    CUSTOMCONCAT1D = Join(Application.Transpose(Application.Transpose(rng)), delim) 
End If 

End Function 

für "2D" im Bereich

Function CUSTOMCONCAT2D(rng As Range, delim As String) 
Dim i As Long 
If rng.Rows.Count > 1 And rng.Columns.Count > 1 Then 
    For i = 1 To rng.Rows.Count 
     CUSTOMCONCAT2D = CUSTOMCONCAT2D & Join(Application.Transpose(Application.Transpose(rng.Rows(i))), delim) & delim 
    Next i 
Else 
    CUSTOMCONCAT2D = CUSTOMCONCAT1D(rng, delim) 
End If 

End Function 
Verwandte Themen