StormFusion
asked on
Take a range and display all values in one cell as comma diliminated
Hi,
I need help with a function that can take a range say A2:E5 and convert all values into one long string and place result into A1.
Then the reverse of this that takes the result from A1 and places into the defined range. The values could be either text or integer.
Thank you
I need help with a function that can take a range say A2:E5 and convert all values into one long string and place result into A1.
Then the reverse of this that takes the result from A1 and places into the defined range. The values could be either text or integer.
Thank you
ASKER
Hi,
Across then down.
Across then down.
You won't be able to use functions to do both the concatenation (values into A1) and extraction (values out of A1) because of circular referencing.
If the source range is known - A2:E5 in your example - then one could create a long formula that combines all the values like so:
=A2&","&B2&","&C2&","&D2&" ,"&E2&","& A3&","&B3& ","&C3&"," &D3&","&E3 &","&A4&", "&B4&","&C 4&","&D4&" ,"&E4&","& A5&","&B5& ","&C5&"," &D5&","&E5
Admittedly, that's not very elegant.
If your destination range was similarly-sized, you could insert formulas in the cells to retrieve the specific value, but they, too, would be pretty tedious.
Your best scenario would be to either have a macro or a user-defined function (UDF) that will handle these. However, they involve VBA and you didn't specify whether that was an option.
-Glenn
If the source range is known - A2:E5 in your example - then one could create a long formula that combines all the values like so:
=A2&","&B2&","&C2&","&D2&"
Admittedly, that's not very elegant.
If your destination range was similarly-sized, you could insert formulas in the cells to retrieve the specific value, but they, too, would be pretty tedious.
Your best scenario would be to either have a macro or a user-defined function (UDF) that will handle these. However, they involve VBA and you didn't specify whether that was an option.
-Glenn
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Subodh Tiwari (Neeraj) that works exactly as needed, but how do I now reverse this so it puts values from the function string back into the range defined,
So I use Range ToString (A1:A5) which works, and then another function which 0,0,0,0 for example is passed to and it places all the individual values back into the cells.
Cheers
So I use Range ToString (A1:A5) which works, and then another function which 0,0,0,0 for example is passed to and it places all the individual values back into the cells.
Cheers
Here's an slightly different function which allows you to specify the delimiter and whether to go across and down or down and across.
It defaults to across and down with the delimiter being a comma.
As for a 'reverse' function, how would the range be determined?
Function RangeToDelimList(rng As Range, Optional Delim = ",", Optional AcrossDown = True)
Dim I As Long
Dim R As Long
Dim tmp As String
Dim arr()
For I = 1 To rng.Rows.Count
If DownAcross Then
tmp = Join(Application.Transpose(Application.Index(Application.Transpose(rng), , I)), Delim)
Else
tmp = Join(Application.Transpose(Application.Index(rng, , I)), Delim)
End If
ReDim Preserve arr(R)
arr(R) = tmp
R = R + 1
Next I
RangeToDelimList = Join(arr, Delim)
End Function
It defaults to across and down with the delimiter being a comma.
As for a 'reverse' function, how would the range be determined?
ASKER
The range would be past to it similar to function
But how would the range be determined?
Would it be passed to the function?
Would it be passed to the function?
ASKER
Ok, hows about when the first function is run it stores the RANGE in the first DIM slot, then when the comma deliminated code is passed to a new function it reads the first DIM slot for the range and it has exact size and range to be posted back?
SO.... A2:D5,TEST,DATA,DUMMY,VAR, 001 etc
Then when other function called it nows exactly where it all goes back but obviously doesn't paste the RANGE value from the beginning of the string.
That be great :)
SO.... A2:D5,TEST,DATA,DUMMY,VAR,
Then when other function called it nows exactly where it all goes back but obviously doesn't paste the RANGE value from the beginning of the string.
That be great :)
So the first function would return the range address followed by the list of values from the range?
ASKER
The first function would produce a comma deliminated list of data with the first of these values being the range it was taken from.
Then when this data string is past to another function it takes the first data from the string and knows this is the range the data needs to go into.
Then when this data string is past to another function it takes the first data from the string and knows this is the range the data needs to go into.
No comment has been added to this question in more than 21 days, so it is now classified as abandoned.
I have recommended this question be closed as follows:
Accept: Subodh Tiwari (Neeraj) (https:#a41828427)
If you feel this question should be closed differently, post an objection and the moderators will review all objections and close it as they feel fit. If no one objects, this question will be closed automatically the way described above.
frankhelk
Experts-Exchange Cleanup Volunteer
I have recommended this question be closed as follows:
Accept: Subodh Tiwari (Neeraj) (https:#a41828427)
If you feel this question should be closed differently, post an objection and the moderators will review all objections and close it as they feel fit. If no one objects, this question will be closed automatically the way described above.
frankhelk
Experts-Exchange Cleanup Volunteer
Should it be across then down or down then across?