ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Coverting array data into single column (https://www.excelbanter.com/excel-worksheet-functions/7908-coverting-array-data-into-single-column.html)

dgarg

Coverting array data into single column
 
I have data in form of array (table). For example:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

i want to convert this data into sigle column as below:
1
6
11
2
7
12
..
..
5
10
15

Can anyone suggest me the way to do this?


Frank Kabel

Hi
on your second sheet in A1 enter
=OFFSET('sheet1'!$A$1,INT((ROW()-1)/5),MOD(ROW()-1,5)
and copy this down

--
Regards
Frank Kabel
Frankfurt, Germany

dgarg wrote:
I have data in form of array (table). For example:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

i want to convert this data into sigle column as below:
1
6
11
2
7
12
.
.
5
10
15

Can anyone suggest me the way to do this?




Alan Beban

If the functions in the freely downloadable file at
http://home.pacbell.net/beban are available to your workbook:

=ArrayReshape(A1:E3,15,1,"c") array entered into a 15-cell column.

Alan Beban

dgarg wrote:
I have data in form of array (table). For example:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

i want to convert this data into sigle column as below:
1
6
11
2
7
12
.
.
5
10
15

Can anyone suggest me the way to do this?


Harlan Grove

Frank Kabel wrote...
on your second sheet in A1 enter
=OFFSET('sheet1'!$A$1,INT((ROW()-1)/5),MOD(ROW()-1,5)
and copy this down


First, your formula is missing a final right parenthesis. Untested?

Secong, you do need to start reading what OPs write more carefully. OP wants
to interate by row then by column, not by column then by row. Your formula
above would need to change to

=OFFSET('sheet1'!$A$1,MOD(ROW()-1,3),INT((ROW()-1)/3))

Third, positionally dependent. As an alternative, the following returns an
array of numbers that could be used as a component in longer formulas. I'm
using x to denote the source range.

=N(OFFSET(x,MOD(ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS (x))))-1,ROWS(x)),
INT((ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x))))-1)/ROWS(x)),1,1))

For that matter, if the result were to be entered into a single column,
multiple row range of cells, a slightly shorter array formula could be used.

=INDEX(x,MOD(ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x) )))-1,ROWS(x))+1,
INT((ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x))))-1)/ROWS(x))+1)



Frank Kabel

Frank Kabel wrote...
on your second sheet in A1 enter
=OFFSET('sheet1'!$A$1,INT((ROW()-1)/5),MOD(ROW()-1,5)
and copy this down


First, your formula is missing a final right parenthesis. Untested?

No but just not able to copy and paste correctly on my side :-)


Secong, you do need to start reading what OPs write more carefully.
OP wants to interate by row then by column, not by column then by
row. Your formula above would need to change to

=OFFSET('sheet1'!$A$1,MOD(ROW()-1,3),INT((ROW()-1)/3))

Thanks for the correction


Third, positionally dependent. As an alternative, the following
returns an array of numbers that could be used as a component in
longer formulas. I'm using x to denote the source range.

=N(OFFSET(x,MOD(ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS (x))))-1,ROWS(x)),
INT((ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x))))-1)/ROWS(x)),1,1))

For that matter, if the result were to be entered into a single
column, multiple row range of cells, a slightly shorter array formula
could be used.

=INDEX(x,MOD(ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x) )))-1,ROWS(x))+1,
INT((ROW(INDIRECT("1:"&(ROWS(x)*COLUMNS(x))))-1)/ROWS(x))+1)


Both formulas are quite nice
Regards
Frank




All times are GMT +1. The time now is 06:29 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com