第1个回答 2020-03-01
如果需要保留原含有行的数据表,就复制一个工作表(方法:右击下面的工作表标签名称,选择“复制或移动工作表”,再选“创建副本”,选择副本的位置),在复制得到的工作表中,直接排序,就把空行排到后面去了。如果不必保留原数据表,就直接在工作表中排序即可。这不是很简单吗?对于提问所说的“数据非常多”,那这更是不二选的方法,用公式完全没必要,数据多会很卡。
第2个回答 2020-03-01
假定原表shee1
新表的A2输入公式
=index(sheet!a:a,small(if(sheet1!$a$2:$a:$a10000<>"",row($2:$10000),4^8),row(a1)))&""
同时按下CTRL+SHIFT+Enter三键,使数组公式出现{ }
公式右拉再下拉到无数据本回答被提问者采纳
第3个回答 2020-03-01
1、你的描述不清晰,如果只是你截图这种,筛选都可以达到;
2、如果你的表格里有很多要分组的,比如甲、乙、丙、丁……都要分类,那公式就不合适。
所以准确描述问题很重要,能让你快速的获得想要的答案。
给你个对A列数据进行拆分数据并新建相应工作表的代码吧。
Sub 拆分数据()
Dim i, j,
Dim irow As Integer
Dim sh As Worksheet
Dim sht As Worksheet
Dim sh0 As Worksheet
Set sh0 = ActiveSheet
irow = sh0.Range("A65536").End(xlUp).Row
Application.DisplayAlerts = False
If Sheets.Count > 1 Then
For Each sht In Sheets
If sht.Name <> sh0.Name Then
sht.Delete
End If
Next
End If
Application.DisplayAlerts = True
For i = 2 To irow
k = 0
For Each sh In Sheets
If sh.Name = sh0.Cells(i, 1) Then
k = 1
End If
Next
If k = 0 Then
Sheets.Add(after:=Sheets(Sheets.Count)).Name = sh0.Cells(i, 1)
End If
Next
For j = 2 To Sheets.Count
sh0.Range("a1:az" & irow).AutoFilter Field:=1, Criteria1:=Sheets(j).Name
sh0.Range("a1:az" & irow).Copy Sheets(j).Range("a1")
Next
sh0.Range("1:1").AutoFilter
sh0.Select
End Sub
第4个回答 2020-03-01
手动删除也现实
F5/定位/定位条件/空值/删除/删除整行