2014-11-14 80 views
1

我必須清理包含敏感數據的財務報告,但仍保留報告的外觀,感覺和目的。我正在尋找創建一個可以查找所有數字數據(非公式)並通過一個數字(或理想情況下隨機數字)來查找所有數字數據的宏來更改該值,從而爲我公司的顧問消毒它的宏。Excel VBA宏清理財務報告

到目前爲止我發現的腳本是這樣的。它可以清除所有數字數據,並保留文本和公式。有人可以幫我修改這個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 

回答

2

以下將乘以1.2和3之間的「不同」隨機數乘以工作簿中的每個數字,但保留公式。對每個值使用不同的隨機數將使得人們幾乎不可能破解「幻數」。爲了計算的更多的方式隨機數看this link

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 

前:

enter image description here

後:

enter image description here

+0

感謝您的幫助!似乎它不止一次地貫穿序列?我在我的牀單上試過這個,數百萬的價值最終會達到萬億以上。 – 2014-11-17 13:46:20

+0

如果它只被調用一次,它應該只運行一次單元格,但是如果您的方程式依賴於以前的多個值,則會看到這種通貨膨脹。嘗試將隨機數的範圍改爲0.1至1.9,從而平均跨越1,並希望將結果帶回現實。 – 2014-11-17 14:40:45

+0

完美!非常感謝! – 2014-11-17 15:19:15