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

有一excel表格(多列,每列的个数不一定一样,具体的列数在每行的A1位置,最大可为300列,最小为1列;多行:达200行):转换成(一列):可以参考:=OFFSET(B... 有一excel表格(多列,每列的个数不一定一样,具体的列数在每行的A1位置,最大可为300列,最小为1列;多行:达200行):

转换成(一列):

可以参考:=OFFSET(B$2,(ROW(1:1)-1)/5,(MOD(ROW(1:1)-1,5))),但该函数仅限定为固定列数,即函数中的5列(更适合矩阵式的数据)。导致结果是:不够5列的都填充了"0",不符合我的要求。请高手帮忙破解!
展开
 我来答
COUNTIFABS
2013-08-14 · TA获得超过2154个赞
知道大有可为答主
回答量:1594
采纳率:55%
帮助的人:1231万
展开全部

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


数组公式:



更多追问追答
追问
非常感谢。能做些解释吗,看不大懂。
这是A,B,C最大三列,1,2,3,4最多四行。要是最大100列,200行呢,需要修改哪些东西!
追答
1、把$A$1:$C$4这些改为你相应的单元格就行了;

2、工式有点复杂,你最好手动在表里面一步步运行下;
IF($A$1:$C$4="",4^8,(ROW($1:$4)*10+COLUMN($A:$C)))
如果等于空,就为65535 ,等会要用的,如果不会空就为所对应的行*10+列数;这样出来就把数字由小到大排序了;
SALL这里是把数字从小到大出出来;

TEXT是把数字值设置为ROCO格式;
&"" 是为了不返回0,公式本来是会返回0的,连接一个空,就会返回空;
TAT萝卜
2013-08-14 · TA获得超过4972个赞
知道大有可为答主
回答量:3084
采纳率:66%
帮助的人:1111万
展开全部

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

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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jjchangyuan
2013-08-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:4278
采纳率:90%
帮助的人:1086万
展开全部
令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))下拉填充
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dancheqingwa
2013-08-14 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:119万
展开全部
选种所有数据区域,然后复制——选择性贴粘——贴粘为数据(并选择转置)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式