Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MS Excel - Concat with a delimiter

I've got a long spreadsheet with numbers.

I need to get them in one string delimited by ; eg. 4364453;24332432;2342432

I know I can do:

=concat(A1:A2000) 

but that will merge it in one string without the delimiter - I can't seem to find an option for a delimiter when you specify a range.

Thank you

like image 966
Wasteland Avatar asked Feb 10 '17 17:02

Wasteland


People also ask

How do you CONCATENATE in Excel with a delimiter?

CONCATENATE Excel Ranges (With a Separator)Select the entire formula and press F9 (this converts the formula into values). Remove the curly brackets from both ends. Add =CONCATENATE( to the beginning of the text and end it with a round bracket).

How do you CONCATENATE in Excel with a comma and a space?

Concatenate a column with comma/space by formula 1. Select a blank cell you will place the concatenation result in, and enter the formula =CONCATENATE(TRANSPOSE(A2:A16)&",") into it. 2. Highlight the TRANSPOSE(A2:A16)&"," in the formula, and press the F9 key to replace cell reference with cell contents.

How do I add a carriage return in an Excel CONCATENATE?

To concatenate multiple entries, we use Ampersand (&). But as we want to insert a Carriage Return into the formula, the CHAR function is used. We know CHAR (10) is the character code for Line Break.

What is the difference between concat and CONCATENATE in Excel?

The CONCAT function combines the text from multiple ranges and/or strings, but it doesn't provide delimiter or IgnoreEmpty arguments. CONCAT replaces the CONCATENATE function. However, the CONCATENATE function will stay available for compatibility with earlier versions of Excel.


1 Answers

Use TEXTJOIN() instead:

=TEXTJOIN(";",TRUE,A1:A2000) 

For those who do not have OFFICE 365 Excel then use this UDF that mimics the TEXTJOIN Function.

Put this in a module attached to the workbook and use the formula above to call.

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)     Dim d As Long     Dim c As Long     Dim arr2()     Dim t As Long, y As Long     t = -1     y = -1     If TypeName(arr) = "Range" Then         arr2 = arr.Value     Else         arr2 = arr     End If     On Error Resume Next     t = UBound(arr2, 2)     y = UBound(arr2, 1)     On Error GoTo 0      If t >= 0 And y >= 0 Then         For c = LBound(arr2, 1) To UBound(arr2, 1)             For d = LBound(arr2, 1) To UBound(arr2, 2)                 If arr2(c, d) <> "" Or Not skipblank Then                     TEXTJOIN = TEXTJOIN & arr2(c, d) & delim                 End If             Next d         Next c     Else         For c = LBound(arr2) To UBound(arr2)             If arr2(c) <> "" Or Not skipblank Then                 TEXTJOIN = TEXTJOIN & arr2(c) & delim             End If         Next c     End If     TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) End Function 
like image 121
Scott Craner Avatar answered Sep 19 '22 17:09

Scott Craner