Excel:许多行 – Colum Data to Rows

我有下面的表格中的信息。

1. ABC 2. DE 3. FGHIJKLM 4. NOP 5. Q 6. RSTUVWXYZ 

我所追求的是以下几点:

 A B C .. X YZ 

想法/build议将不胜感激。

谢谢

在表格区域外选取一些单元格,然后input:

= IF(OFFSET($ A $ 1,ROUNDUP(ROWS($ 1:1)/ 9,0)-1,MOD(ROWS($ 1:1)-1,9-))= “”, “”,OFFSET($ A $ 1,ROUNDUP(ROWS($ 1:1)/ 9,0)-1,MOD(ROWS($ 1:1)-1,9-)))

然后向下复制:

在这里输入图像说明

如您所见,每行末尾的空格都将保留。 如果你想删除这些空白,那很简单。

编辑#1:

原来的公式有一个错误。 正确的公式应该是:

 =IF(OFFSET($A$1,ROUNDUP(ROWS($1:1)/9,0)-1,MOD(ROWS($1:1)-1,9))=0,"",OFFSET($A$1,ROUNDUP(ROWS($1:1)/9,0)-1,MOD(ROWS($1:1)-1,9))) 

通常我会尽量避免使用VBA(按照Gary的学生的回答),但在这种情况下,VBA更容易理解,所以我可能会例外:

 Public Function Vectorize(data As Range) As Variant Dim Result() As Variant ReDim Result(1 To WorksheetFunction.CountA(data)) Dim r, c, n As Long n = 0 For r = 1 To data.Rows.Count For c = 1 To data.Columns.Count If Not (IsEmpty(data(r, c))) Then n = n + 1 Result(n) = data(r, c) End If Next c Next r Vectorize = Application.Transpose(Result) End Function 

这个function也会忽略空白单元格。

结果作为列数组返回; 要使用,请select要输出的单元格,input公式=Vectorize(A1:I6) (假设数据在A1:I6 ),然后按Ctrl + Shift + Enter将其评估为数组公式。

通过重复应用抵消/小计,可能会更灵活地做到这一点。 从(说)K2开始

 =IFERROR(IF(ROWS($1:1)<=COUNTA(A$1:I$1),INDEX(A$1:I$1,ROWS($1:1)), INDEX(A$1:I$10,MATCH(TRUE,SUBTOTAL(3,OFFSET(A$1,0,0,ROW(A$1:I$10),10))>=ROWS($1:1),0), ROWS($1:1)-SUBTOTAL(3,OFFSET(A$1,0,0,MATCH(TRUE,SUBTOTAL(3,OFFSET(A$1,0,0,ROW(A$1:I$10),10))>=ROWS($1:1),0)-1,ROWS(A$1:I$10))))),"") 

必须使用Ctrl Shift Enter作为数组公式input

在这里输入图像说明