请问各位,如何在excel里面随机的删除一些行如(占整体10%、20%等)呢?谢谢啊

如题所述

用宏吧,快捷方便!
我写了一个,请试下。

运行后,Excel先会提示你输入需要删除的比率(默认为带%,20%就输入20),然后Excel计算需要删除的行数据,最后并与你确认是否要执行删除。

Sub RndDelete()
Dim TotalRow As Long, NeedDel As Long, DelRate As Single, i As Integer, R As Long
Application.ScreenUpdating = False
ActiveCell.SpecialCells(xlLastCell).Select
While WorksheetFunction.CountA(Rows(ActiveCell.Row())) = 0 And ActiveCell.Row() > 1
ActiveCell.Offset(-1, 0).Range("A1").Select
Wend
Application.ScreenUpdating = True
TotalRow = ActiveCell.Row()
DelRate = Application.InputBox("当前有效数据为 " & TotalRow & " 行, 请输入需要删除的比率(%)", _
"随机删行", 10, , , , , 1)
If DelRate = 0 Then Exit Sub
NeedDel = DelRate / 100# * TotalRow
If MsgBox("将要删除的行数为 " & NeedDel & "! 确定要这样做吗?", _
vbQuestion + vbYesNoCancel + vbDefaultButton2) <> vbYes Then Exit Sub
For i = 1 To NeedDel
R = Int((TotalRow * Rnd) + 1)
Cells(R, 1).EntireRow.Delete
TotalRow = TotalRow - 1
Next i
End Sub

强烈建议,每次执行任何宏之前,都 Ctrl+S 保存一下当前文件,因为宏的操作无法撤消。

有疑问,请Hi我或给我发百度消息
GoodLuck!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-24
在数据区的最后一列后面一列中输入公式:
=if(rand()<=10%,"删除","")
公式下拉到最后一行
标识为删除的你删除掉就可以了.
公式中的10%改为20%也可以追问

你好 ,按照你的程序,标示出了该删除的行,但是我的数据有几万行 ,删除起来还是很复杂 请问可以自动让其删除吗?期待你的答复 谢谢!

追答

自动删除需要VBA的
你可以按标识出删除的列来对整个表排序,把要删除的排列在一起批量删除.

本回答被提问者采纳
第2个回答  2011-03-24
把所有的空白筛选出来,然后一起删掉,试试看?
另外我再补充一点
记得要使用选定可见单元格这个工具
否则有可能会把两个空白行之间的内容删除

PS:在EXCEL工具栏处点击右键,选择自定义,再选择命令标签,类别框里选编辑,然后在右边的明令框的最下面(应该是的……)有选定可见单元格这个按钮标签,把它拖到工具栏你觉得顺眼的地方吧,那么以后用起来就会比较顺手啦~
第3个回答  2011-03-24
假设为2w行,删除15000行
1.B列输入公式:
=RANDBETWEEN(0,20000)
2.排序(升序,降序由你定)关键字为:B列
3.选择行至15000行
一切OK
相似回答