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

2024年11月21日 23:21
有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):

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