Concatenate until blank cell

Hi,

I have the following information on an excel sheet and i want a macro to concatenate the data untill the blank cell is found i have tried to explain it below

Data

A      B      C      D      D
Folder 1      Folder 2      Folder 3      Folder 4      
Folder 3      Folder 4      Folder 5      Folder 6      Folder 7
Folder 1      Folder 2      Folder 3      Folder 4      
Folder 3      Folder 4      Folder 5            

Output required

I used Concatanate(CellA&"\"& Cell B&...etc)

Folder 1\Folder 2\Folder 3\Folder 4\
Folder 3\Folder 4\Folder 5\Folder 6\Folder 7
Folder 1\Folder 2\Folder 3\Folder 4\
Folder 3\Folder 4\Folder 5\\

I do not want the extra "\" in my output

Please can someone help me with a macro to generate the output without the extra "\"

Thanks
Ram
ramkumar8516Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Patrick MatthewsCommented:
Hi Ram,

Add this new function to your workbook's VBProject, in a regular module:





Option Explicit

Function ConcRange(Substrings As Range, Optional Delim As String = "", _
    Optional AsDisplayed As Boolean = False, Optional SkipBlanks As Boolean = False)
   
    ' Function by Patrick Matthews, Matt Vidas, and rberke

    ' Concatenates a range of cells, using an optional delimiter.  The concatenated
    ' strings may be either actual values (AsDisplayed=False) or displayed values.
    ' If NoBlanks=True, blanks cells or cells that evaluate to a zero-length string
    ' are skipped in the concatenation
   
    ' Substrings: the range of cells whose values/text you want to concatenate.  May be
    ' from a row, a column, or a "rectangular" range (1+ rows, 1+ columns)
   
    ' Delimiter: the optional separator you want inserted between each item to be
    ' concatenated.  By default, the function will use a zero-length string as the
    ' delimiter (which is what Excel's CONCATENATE function does), but you can specify
    ' your own character(s).  (The Delimiter can be more than one character)
   
    ' AsDisplayed: for numeric values (includes currency but not dates), this controls
    ' whether the real value of the cell is used for concatenation, or the formatted
    ' displayed value.  Note for how dates are handled: if AsDisplayed is FALSE or omitted,
    ' dates will show up using whatever format you have selected in your regional settings
    ' for displaying dates.  If AsDisplayed=TRUE, dates will use the formatted displayed
    ' value

    ' SkipBlanks: Indicates whether the function should ignore blank cells (or cells with
    ' nothing but spaces) in the Substrings range when it performs the concatenation.
    ' If NoBlanks=FALSE or is omitted, the function includes blank cells in the
    ' concatenation.  In the examples above, where NoBlanks=False, you will see "extra"
    ' delimiters in cases where the Substrings range has blank cells (or cells with only
    ' spaces)
   
    Dim CLL As Range
   
    For Each CLL In Substrings.Cells
        If Not (NoBlanks And Trim(CLL) = "") Then
            ConcRange = ConcRange & Delim & IIf(AsDisplayed, Trim(CLL.Text), Trim(CLL.Value))
        End If
    Next CLL

    ConcRange = Mid$(ConcRange, Len(Delim) + 1)
   
End Function



Now use it like this:

=ConcRange(1:1,"\",TRUE,TRUE)

That will concatenate the items in row 1, delimiting with a backslash, and ignore the cells with blanks.

Regards,

Patrick
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Patrick MatthewsCommented:
Daleoran,

The user-defined function I provided did exactly as the Asker requested.

Regards,

Patrick
0
ramkumar8516Author Commented:
Hi Patrick,

Thank you for the help, I was on leave for some medical attention on my shoulder and that is the reason i did not access the answers.  Sorry for the late response.

I appereciate your time and help,
Thank you once again,
Regards,
Ram
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Office

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.