随机删除MS Excel纸中30%的细胞数据



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

请建议一个宏/公式/Java代码(使用POI)可以帮助我实现同样的方法。

预先感谢!

选择要使用的范围并运行此宏,或者,如果您有固定范围,则将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

put = rand()在最后一列中并将其放下,用大到小,然后删除60行

最新更新