乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何把<em>excel</em>中多行多列数据转成一列数据?急求!!!-excel 多列变一列

如何把<em>excel</em>中多行多列数据转成一列数据?急求!!!-excel 多列变一列

作者:乔山办公网日期:

返回目录:excel表格制作


选择包含所有数据的单元格区域(A3:F5),按F5键或CTRL+G,定位条件,空值,确定。
在选择的任一空白单元格单击右键,删除,右侧单元格左移,确定。

数据量大的话建议用VBA


1、由于以下VBA将所选择的区域转换到A列中,如果A列包含数据,先在工作表的最左侧插入一新的A列,以便放置转换后的数据。

2、按快捷键Alt+F11,打开VBA编辑器,在右侧代码窗口中粘贴下列代码:

Sub 选定区域转换为一列并去除空格()
Dim TheRng, TempArr
Dim i As Integer, j As Integer, elemCount As Integer
On Error GoTo line1
Range("a:a").ClearContents
If Selection.Cells.Count = 1 Then
  Range("a1") = Selection
Else
  TheRng = Selection
  elemCount = UBound(TheRng, 1) * UBound(TheRng, 2)
  ReDim TempArr(1 To elemCount, 1 To 1)
  For i = 1 To UBound(TheRng, 1)
    For j = 1 To UBound(TheRng, 2)
      TempArr((i - 1) * UBound(TheRng, 2) + j, 1) = TheRng(i, j)
    Next
  Next
  Range("a1:a" & elemCount) = TempArr
End If
line1:

Dim r As Long
        r = Sheet1.UsedRange.Rows.Count
    For i = r To 1 Step -1
        If Cells(i, 1) = "" Then
    Rows(i).Delete
End If
    Next

End Sub

3、关闭VBA编辑器,返回Excel工作表界面。

4、全选需要转换的区域(千万记e799bee5baa6e997aee7ad94e78988e69d83365得要做这个步骤!!!),再按Alt+F8,打开“宏”对话框,选择上述代码中的宏名“选定区域转换为一列并去除空格”,运行代码。


D1右拉下拉

=OFFSET($A$1,ROW()*3-3+(COLUMN()>5)*(COLUMN()-5),C1<>"")


示例图1

示例图2

F1公式为:

=OFFSET(A$1,INT(ROW(A3)/3)-1,)

G1公式为:

=OFFSET(A$1,INT(ROW(A3)/3)-1,MOD(ROW(A3),3)+1)

然后选中F1至G1,一起下拉填充公式。

问:公式中为什么用INT(ROW(A3)/3)和MOD(ROW(A3),3)呢?

答:因为一共有三个科目,下拉时,每个人名需要生成三行数据,这里的3是等差。

假如说,一共有七个科目的话,每个人名需要生成七行数据,那么等差就是7了,就得用INT(ROW(A7)/7)或MOD(ROW(A7),7)了,明白了没有?

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网