2016-06-06 7 views
0

Ich habe zwei Formeln, die den Bereich finden, den ich verketten möchte. Ein Formel gibt die Zellenadresse für den Anfang des Bereichs zum Beispiel:Excel verketten jede Zelle im Bereich

'[AM Track.xlsm]Raw Data'!$A$10` 

Die andere Formel gibt die Zellenadresse für das Ende des Bereichs z.B.

'[AM Track.xlsm]Raw Data'!$A$21` 

Wie kann ich jede Zelle in diesem Bereich verketten?

+0

Ich glaube, dass es eine neue Funktion in Excel 2016 gibt, die solche Dinge tun kann. @Jeeped hat es mir einmal gesagt. Aber ich konnte es nicht finden/es zur Arbeit bringen. Vielleicht hat er/sie eine Lösung für dein Problem. – Ralph

+1

@Ralph, glaube ich [textjoin()] (https://support.office.com/en-us/article/TEXTJOIN-function-357b449-ec91-49d0-80c3-0e8fc845691c) ist, wovon Sie sprechen. OP, wenn Sie Excel 2016 nicht haben, benötigen Sie eine VBA-Funktion/UDF, um dies zu entfernen. – JNevill

+0

Irgendwelche Vorschläge zum VBA-Code? – Adavid02

Antwort

0

Dank der Kommentar über TextJoin in Excel 2016 ich dieses gefunden:

Option Explicit 
Function TEXTJOIN(delimiter As String, ignore_empty As String, ParamArray textn() As Variant) As String 
    Dim i As Long 
    For i = LBound(textn) To UBound(textn) - 1 
     If Len(textn(i)) = 0 Then 
      If Not ignore_empty = True Then 
       TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
      End If 
     Else 
      TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
     End If 
    Next 
    TEXTJOIN = TEXTJOIN & textn(UBound(textn)) 
End Function 
1

Eine schnelle VBA Routine, die ahmt wäre TextJoin in Excel 2016 und Ihren Bedürfnissen entspricht:

Function textjoin(delimiter As String, ignoreEmpty As Boolean, startcell As Range, endcell As Range) As String 
    Dim rngCell As Range 

    For Each rngCell In Range(startcell, endcell).Cells 
     If (ignoreEmpty And rngCell.Value <> "") Or Not ignoreEmpty Then 
      If textjoin = "" Then textjoin = rngCell.Value Else textjoin = textjoin & delimiter & rngCell.Value 
     End If 
    Next rngCell 
End Function 

Der Unterschied zwischen diesem und der eingebauten Excel 2016 textjoin() Formel ist, dass die letzten beiden Parameter sind der Anfang und das Ende des Bereichs (anstelle von nur einem Bereich wie textjoin will).

Um dies zu verwenden, gehen Sie zu Ihrem VBE (Alt + F11). Erstellen Sie ein neues Modul im VBAProject Ihrer Arbeitsmappe. Dann fügen Sie das ein.