excel中大量数据如何将其从竖着变成横排?

如图示例

如图,复制数据到空表格B列,然后增加辅助列:

1、c1输入:

=LEN(B1)<>LENB(B1)

然后下拉,通过判断是否中文来对数据进行分类;

2、A1输入:

=SUMPRODUCT(($C$1:C1)*1)

然后下拉形成 同一项目一个序列号这样的操作。

3、e1输入:

=IF(COUNTIF($A:$A,ROW(A1))<COLUMN(A1),"",INDEX($B:$B,MATCH(ROW(A1),$A:$A,0)+COLUMN(A1)-1))

然后右拉若干列(大于a列中同一数据的最大数量),然后下拉若干行完成公式操作。

4、将结果复制,然后到需要的地方使用右键“选择性粘贴”选择 数值,完成操作。

2、

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-08-11

【刚才有点小错误,现在已经更正了一下,答案如下】

你这是姓名和电话吧?

用VBA吧。

如上图所示:

第一步,按ALT+F11打开VBA编辑器

第二步,点击“插入”---插入模块

第三步,双击模块

第四步,在右侧粘贴代码

第五步,点击三角形的那个按钮,可执行代码命令。

代码如下,供复制:

Sub 俺的转置()

    Dim rng As Range, ir& '声明变量

    For Each rng In Range("A2:A13") '遍历这个区域

        If IsNumeric(Left(rng, 1)) = False Or rng.Row = 13 Then '如果首字符不是数字或遍历到最后一行时,那么

            If ir > 0 Then '如果ir大于0,那么

                rng.Offset(ir - rng.Row).Resize(rng.Row - ir - (rng.Row = 13), 1).Copy '复制

                Range("C" & Rows.Count).End(3).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True '转置粘贴

            End If

            ir = rng.Row '赋值ir的值为当前姓名所在的行号

        End If

    Next

    MsgBox "处理完毕", , "提示"

End Sub

本回答被网友采纳
第2个回答  2021-08-11

讨厌的合并单元格会导致你的数据处理变得非常的麻烦啊!!!

如上图:

1、在E1单元格输入数组公式(是数组公式!!!必须CTRL+SHIFT+ENTER这3个键同按结束的!!否则公式无效的!!!)

=IFERROR(INDEX($A$1:$A$12,SMALL(IF(ISERROR(1*$A$1:$B$12),ROW($A$1:$A$12),4^8),ROW(A1))),"")

复制并下拉。

2、在F1单元格输入公式:

=IFERROR(IF(OR(E1="",$E2=INDEX($A$1:$A$12,MATCH($E1,$A$1:$A$12,0)+COLUMN(A$1))),"",INDEX($A$1:$A$12,MATCH($E1,$A$1:$A$12,0)+COLUMN(A$1))),"")

复制并下拉和右拉,至I7单元格,即可…………

第3个回答  2021-08-11
将张三那些全部选起来复制下,在新的单元格选择性粘贴选转置,其他的也都这样操作就行了
第4个回答  2021-08-11
你这也不完全是横置啊~
相似回答