Vba 在MS excel工作表中随机删除30%的单元格数据

Vba 在MS excel工作表中随机删除30%的单元格数据,vba,excel,apache-poi,Vba,Excel,Apache Poi,我有一个excel表格,有200行150列(即30000个单元格)。我想随机删除总数据的30%(即从随机行和随机列)。如果我可以一次从一列中随机删除30%的数据,也应该可以 请推荐一个宏/公式/Java代码(使用POI)来帮助我实现同样的目标 提前谢谢 Put=Rand()在最后一列中,并将其向下复制,按从大到小排序,然后删除60行选择要使用的范围并运行此宏,或者,如果有固定范围,则将Set rng=Selection更改为Set rng=range(“A1:ET200”)或任何范围 Sub D

我有一个excel表格,有200行150列(即30000个单元格)。我想随机删除总数据的30%(即从随机行和随机列)。如果我可以一次从一列中随机删除30%的数据,也应该可以

请推荐一个宏/公式/Java代码(使用POI)来帮助我实现同样的目标


提前谢谢

Put=Rand()在最后一列中,并将其向下复制,按从大到小排序,然后删除60行

选择要使用的范围并运行此宏,或者,如果有固定范围,则将
Set rng=Selection
更改为
Set rng=range(“A1:ET200”)
或任何范围

Sub DelThirty()
Dim rng As Range
Dim i As Long, x As Long, y As Long

Set rng = Selection

On Error GoTo ErrHandler

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

For i = 1 To Int(rng.Cells.Count * 0.3)
retry:
    x = WorksheetFunction.RandBetween(1, rng.Rows.Count)
    y = WorksheetFunction.RandBetween(1, rng.Columns.Count)
    If rng.Cells(x, y) <> "" Then
        rng.Cells(x, y).ClearContents
    Else
        GoTo retry
    End If
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

ErrHandler:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
Sub-delthree()
变暗rng As范围
我长,x长,y长
设置rng=选择
关于错误转到错误处理程序
Application.Calculation=xlCalculationManual
Application.ScreenUpdating=False
对于i=1到Int(rng.Cells.Count*0.3)
重试:
x=WorksheetFunction.randbween(1,rng.Rows.Count)
y=工作表函数.randbween(1,rng.Columns.Count)
如果rng.Cells(x,y)“,则
空白单元格(x,y).ClearContents
其他的
转到重试
如果结束
接下来我
Application.Calculation=xlCalculationAutomatic
Application.ScreenUpdating=True
错误处理程序:
Application.Calculation=xlCalculationAutomatic
Application.ScreenUpdating=True
端接头

您尝试过什么吗???您使用的是什么版本的excel?很难建议使用宏来完成您想做的事情,因为我怀疑以前是否有人有过这样的要求,因此这样的宏还不存在-您的代码可能是第一个完成此任务的代码。您在编写代码时遇到了什么问题?用python编写代码来解决这个问题。谢谢嗨,谢谢。。。它将删除随机行。但是我需要随机删除单元格,这样每行都有一些空单元格。用python编写代码来解决这个问题。谢谢