Excel:许多行 - Colum Data to Rows

时间:2017-01-28 12:14:21

标签: excel

我有下表中的信息。

1. A B C
2. D E
3. F G H I J K L M 
4. N O P 
5. Q
6. R S T U V W X Y Z

我所追求的是以下内容:

A
B
C
..
X
Y 
Z

我们将不胜感激的想法/建议。

谢谢

3 个答案:

答案 0 :(得分:2)

在表区域外选择一些单元格,然后输入:

<击> = 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-)))

<击>

<击>

然后向下复制:

enter image description here

如您所见,每行末尾的空白都会被保留。如果你想删除那些空白,那很容易。

修改#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)))

答案 1 :(得分:1)

一般来说,我试图避免使用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

此功能也会忽略空白单元格。

结果以列数组的形式返回;要使用,请选择要输出的单元格,键入公式=Vectorize(A1:I6)(假设您的数据位于A1:I6)并按 Ctrl + Shift + 输入将其评估为数组公式。

答案 2 :(得分:0)

通过重复应用偏移/小计,可以更灵活地做到这一点。从(比方说)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

作为数组公式输入

enter image description here