怎样把EXCEL里杂乱的一张表,汇总到一列显示

我的原始表格是这样的,里面有一些单元格是空的,

要整理成这样的表,汇总在一列里面

因为数据有近万个,有没有什么公式之类的可以快速的完成。求帮忙,谢谢

亲,这个用VBA编程会方便很多。

先提醒,请务必先把数据备份一下!

 

打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。

 

Sub hb()
Dim i, ra, r, c As Long
c = ActiveSheet.UsedRange.Columns.Count
ra = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1").Resize(ra, 1).SpecialCells(xlCellTypeBlanks).Delete
For i = 2 To c
    r = Cells(Rows.Count, i).End(xlUp).Row
    Cells(1, i).Resize(r, 1).SpecialCells(xlCellTypeBlanks).Delete
    r = Cells(Rows.Count, i).End(xlUp).Row
    ra = Cells(Rows.Count, "A").End(xlUp).Row
    Cells(1, i).Resize(r, 1).Copy Cells(ra + 1, "A")
Next
End Sub

 

 

追问

我执行后报错,能帮忙再看下吗

追答

我这边反复测试都没问题。最怕400错误……看图片你的数据都放在了Sheet1里面吧?代码更改如下,再试一下:

 

Sub hb()
On Error Resume Next
Dim i, ra, r, c As Long
With ThisWorkbook.Sheets("Sheet1")
    c = .UsedRange.Columns.Count
    ra = .Cells(Rows.Count, "A").End(xlUp).Row
    If .Range("A1").Resize(ra, 1).SpecialCells(xlCellTypeBlanks) Is Nothing Then Else .Range("A1").Resize(ra, 1).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    For i = 2 To c
        r = .Cells(Rows.Count, i).End(xlUp).Row
        If .Cells(1, i).Resize(r, 1).SpecialCells(xlCellTypeBlanks) Is Nothing Then Else .Cells(1, i).Resize(r, 1).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
        r = .Cells(Rows.Count, i).End(xlUp).Row
        ra = .Cells(Rows.Count, "A").End(xlUp).Row
        .Cells(1, i).Resize(r, 1).Copy .Cells(ra + 1, "A")
    Next
End With
End Sub

追问

可以执行。 但是如果最终结果显示在 G列,要怎么调

因为显示在A列,就覆盖了原先A列的数据了。

追答

这个程序执行下来,不光是覆盖了A列的数据,而且B/C/D/E/……后面列的空白单元格全部都被删除了。这个表和原来完全面目全非。
这就是我要你备份原数据的原因!你觉得显示在哪一列还有意义吗?

追问

懂了 谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-05
最简单的办法是最好的办法
1、将表格数据范围选中,复制,粘贴到记事本中
2、记事本中全选,复制,粘贴到word中
3、word中ctrl+H,
查找内容输入
^t
替换内容输入

^p

全部替换

4、仍然word替换对话框
查找内容输入

^p^p

替换内容输入

^p

全部替换

5、重复执行第4步,直至提示有0处被替换。将结果复制粘贴回excel中

校对:选择源数据范围(假设a1:f10),在任意一其他单元格输入
=count(a1:f10)

查看结果,与最后生成结果的行数是否一致。
第2个回答  2015-03-19
简单的不用函数的:ctrl+g 定位,选择空值,就选中所有空白单元格了。右击删除空白单元格,单元格向上移动。再排个序就可以了
第3个回答  2015-03-19
把ABCD的列剪切到一列,然后升序或降序排列
第4个回答  2020-06-27

相似回答