Excel VBA宏用于清除财务报告

Excel VBA宏用于清除财务报告,excel,vba,Excel,Vba,我必须删除包含敏感数据的财务报告,但仍然保留报告的外观、感觉和目的。我希望创建一个宏来查找所有数字数据(非公式),并将其乘以一个数字(或理想情况下是一个随机数),以更改值,从而对其进行清理,以便我公司的顾问查看 到目前为止,我找到的剧本是这样的。它可以清除所有数字数据,留下文本和公式。有人能帮我修改这个VBA代码,将所有数值乘以一个数字,而不是删除它吗 For Each wks In Worksheets 'ignore errors in case there is only form

我必须删除包含敏感数据的财务报告,但仍然保留报告的外观、感觉和目的。我希望创建一个宏来查找所有数字数据(非公式),并将其乘以一个数字(或理想情况下是一个随机数),以更改值,从而对其进行清理,以便我公司的顾问查看

到目前为止,我找到的剧本是这样的。它可以清除所有数字数据,留下文本和公式。有人能帮我修改这个VBA代码,将所有数值乘以一个数字,而不是删除它吗

For Each wks In Worksheets
    'ignore errors in case there is only formulas
    On Error Resume Next
    wks.Cells.SpecialCells (xlCellTypeConstants, 1).ClearContents
    wks.Cells.SpecialCells (xlCellTypeConstants, 4).ClearContents
    wks.Cells.SpecialCells (xlCellTypeConstants, 16).ClearContents

    On Error GoTo 0
Next
Set wks = Nothing

以下内容将工作簿中的每个数字乘以1.2和3之间的“不同”随机数,但保留公式。对每个值使用不同的随机数将使某人几乎不可能破解“幻数”。有关计算随机数的更多方法,请参阅

之前:

之后:


谢谢你的帮助!它似乎不止一次地在序列中运行?我在我的工作表上尝试了这个方法,以百万计的值最终将达到万亿或更多。如果只调用一次,它应该只运行每个单元格一次,但是如果你的方程依赖于以前的多个值,你会看到这种膨胀。试着把随机数的范围改为0.1到1.9,这样就等于1,希望能把结果变回现实。太好了!非常感谢你!
Sub scrubNumbers()
    Dim rRange As Range, rCell As Range
    Dim wkw As Worksheet
    Dim randomNum As Double

    For Each wks In Worksheets
        On Error Resume Next
        Set rRange = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlNumbers)

        For Each rCell In rRange
            randomNum = Rnd * (3 - 1.2) + 1.2
            rCell = rCell.Value * randomNum
        Next rCell
    Next
    Set wks = Nothing
End Sub