Skip to main content

Concatenating Rows (JoinR) and Columns (JoinC)














Hi one and all,
Sometimes it becomes difficult to concatenate many results in an array. For Example, we use 
=Index( Table, Small( if( Array = Criteria, Row( Array ) ), Nth Small ), Column No.) 
constructions, we often want all values in the resultant array to be in one cell delimited by "," or any other delimiter. But we are unable to do this, because there is no such concatenation function provided by the Microsoft. So I have come up with a UDF that will do the needful.

Here is the syntax.

=JoinR( Range_OR_Array, Delimiter As String )
=JoinC( Range_OR_Array, Delimiter As String )



JoinR:-
       
Function JoinR(ByRef x As Variant, ByRef Delim As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '           Developed by Vikas Gautam                               '
    '         Forum Expert at ExcelForum.Com                            '
    'For Concatenating Arrays or Ranges having One Column and Many rows '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    dLen = Len(Delim)
    With Application
        SourceArray = .Transpose(x)
        Delim2 = Delim & Delim
        Temp = Replace(Join(SourceArray, Delim), Delim2, "")
        
        Do While InStr(1, Temp, Delim2, 1) > 0
            Temp = Replace(Temp, Delim2, "")
        Loop
    End With
    
    If Left(Temp, dLen) = Delim Then Temp = Mid(Temp, dLen + 1, Len(Temp))
    If Right(Temp, dLen) = Delim Then Temp = Left(Temp, Len(Temp) - dLen)
    JoinR = Temp
    
End Function

JoinC:-
       
Function JoinC(ByRef x As Variant, ByRef Delim As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '           Developed by Vikas Gautam                               '
    '         Forum Expert at ExcelForum.Com                            '
    'For Concatenating Arrays or Ranges having One Row and Many Columns '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    dLen = Len(Delim)
    With Application
        SourceArray = .Transpose(.Transpose(x))
        Delim2 = Delim & Delim
        Temp = Replace(Join(SourceArray, Delim), Delim2, "")
        
        Do While InStr(1, Temp, Delim2, 1) > 0
            Temp = Replace(Temp, Delim2, "")
        Loop
    End With
    
    If Left(Temp, dLen) = Delim Then Temp = Mid(Temp, dLen + 1, Len(Temp))
    If Right(Temp, dLen) = Delim Then Temp = Left(Temp, Len(Temp) - dLen)
    JoinC = Temp

End Function

Note:- Code has been revised for more efficiency.

You can see some application in the Post #8 of the following link:-
http://www.excelforum.com/excel-programming-vba-macros/1064234-multi-dimensional-concatif-coding.html

Enjoy the codes, Good Luck.!
Attached is the example workbook.

Comments

Post a Comment

Popular posts from this blog

Highlighting Duplicates across multiple sheets

Hi One and All, This time I have come up with some conditional formatting stuff. The aim is to highlight the duplicates across multiple sheets and with in the sheet as well. Assumptions:- 1. I am assuming that sheet names goes on like sheet1, sheet2, sheet3.... 2. The Target Column No. is same in all the sheets. I mean, as in the attached example, its Column A which is being targeted in both sheets.

Automation:- Sending Invitation to Meeting Using Excel VBA

Hello Everyone, In one of the previous post, I wrote about automating Sending Emails using Excel VBA. This time I have come up with a pretty similar code. The code below sends Outlook Meeting Invitations to recipients on one click. here is the Code:- Sub Send_Invite_Auto() Dim olApp As Outlook.Application Dim olApt As AppointmentItem Set olApp = New Outlook.Application 'Creating Outlook Session Set olApt = olApp.CreateItem(olAppointmentItem) 'Creating an Appointment With olApt .Subject = "Enter the subject here." 'Subject .Start = DateAdd("d", 5, Now) 'Enter Date + Time here. .Recipients.Add ("example@gmail.com") 'Recipient Name, Alias, or any other Attribute. .MeetingStatus = olMeeting 'olAppointmentItem with Meeting status olMeeting 'becom

Making Password Protected PDFs using Excel Vba and PDFtk Tool

Hi Everyone, This time, I have come up a VBA Code to generate Password protected PDFs using Excel. Actually, Excel Vba has .ExportAsFixedFormat Method to generate PDFs but this hasn't any Parameter which takes password to protect the PDFs. So I have used PDFtk Tool which provide Command Line Interface to make PDFs protected using Password. Actually, You can do various things using PDFtk Tool command line varying from creating, merging, Protecting and many other. So Download the PDFtk Tool from the following link:- Download PDFtk Tookit Here are the Steps:- 1. Install the PDFtk Toolkit. 2. Use the following code to Print or Export the Activesheet with a password.