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