excel用函数实现:多行多列按顺序转换为多行一列

2024-11-21 23:21:13
推荐回答(4个)
回答1:

试下=INDIRECT(TEXT(SMALL(IF($A$1:$C$4="",4^8,(ROW($1:$4)*10+COLUMN($A:$C))),ROW(A1)),"R0C0"),)&""


数组公式:



回答2:

用公式很纠结。宏比较容易:

Sub test()
Dim arr()
ReDim arr(1 To 1)
brr = Selection
k = 1
For i = 1 To UBound(brr)
For j = 1 To UBound(brr, 2)
If brr(i, j) = "" Then Exit For
arr(k) = brr(i, j)
k = k + 1
ReDim Preserve arr(1 To k)
Next
Next
Sheets(2).[A1].Resize(k - 1, 1) = Application.Transpose(arr)
End Sub

选中要转换的数据区域,运行宏test,结果在sheet2

回答3:

令A1=0,可用以下公式转换
=OFFSET(A$1,LOOKUP(ROW(A1)-1,MMULT(--(ROW($1:$200)>=COLUMN(INDIRECT("C1:C200",0))),A$1:A$200),ROW($1:$200)),IF(ROW(A1)<=A$2,ROW(A1),MOD(ROW(A1)-1,LOOKUP(ROW(A1)-1,MMULT(--(ROW($1:$200)>=COLUMN(INDIRECT("C1:C200",0))),A$1:A$200)))+1))下拉填充

回答4:

选种所有数据区域,然后复制——选择性贴粘——贴粘为数据(并选择转置)