如何将excel多行多列按横向输出变为一列

数据见图片,我想要的结果是No.122.102 22.807 0.0084 0.1089 0.2700 No.222.028 22.731 0.0077 0.1101 0.2739 No.322.103 22.808 0.0079 0.1100 0.2737 总油A57928555149.173 22.078 22.782 0.0080 0.1097 0.2725 行数可能很多(需要保证可以扩充或者修改)。列数固定为8列,数据是从第一行第一列横向输出的。第一行输出完之后再从第二行输出。可以使用VBA,如果有函数的话更好~~~~
百度上传数据有问题。结果如图

I1输入

=A1&B1&" "&C1&" "&D1&" "&E1&" "&F1&" "&G1&" "&H1

回车并向下填充

看你的“总油A57928555149.173”的中间没有间隔,如果要加空格,A1&B1改为A1&" "&B1

另外, 0.2700是数值格式,合并后后面的“00”会被自动去掉。如果都要保留4位小数,也行,公式会长些。

=A1&B1&" "&TEXT(C1,"0.000")&" "&TEXT(D1,"0.000")&" "&TEXT(E1,"0.0000")&" "&TEXT(F1,"0.0000")&" "&TEXT(G1,"0.0000")&" "&IF(H1="","",TEXT(H1,"0.000%"))

追答

咦!原来你的抓图后面还有第2个抓图!

I1输入

=OFFSET(A$1,(ROW(1:1)-1)/8,MOD(ROW(8:8),8))

回车并向下填充。

其中个别是百分比的、4位小数的可以另行设置格式。

当然,也可以用公式,但公式会很长,看需要吧。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-14
=INDEX($A$1:$H$25,INT(SMALL(IF($A$1:$H$25<>"",10*ROW(INDIRECT("1:"&ROWS($A$1:$H$25)))+COLUMN($A:$H),65536),ROW(1:1))/10),--RIGHT(SMALL(IF($A$1:$H$25<>"",10*ROW(INDIRECT("1:"&ROWS($A$1:$H$25)))+COLUMN($A:$H),65536),ROW(1:1)),1))
把$A$1:$H$25换成你的数据单元格位置,上面是数组公式,需要三键结束输入(先按住shift+ctrl后不放再按 enter)
第2个回答  2017-08-14
假定原数据在A至H列,输入结果放在J列。在J1输入公式:

=INDIRECT(TEXT(SMALL(IF($A$1:$H$1000="",99999,ROW($A$1:$H$1000)*10+COLUMN($A$1:$H$1000)),ROW()),"R#C0"),)&""
公式以CTRL+SHIFT+ENTER三键结束。
将公式向下复制。
第3个回答  2017-08-14

如下图,在J1中输入

=OFFSET($A$1,ROW(A8)/8-1,MOD(ROW(A8),8))

下拉填充,如黄色区域。

第4个回答  2020-03-25

相似回答