Step 1: Open Excel and Press Alt + F11 to Open the VBA Editor
- Open Excel on your computer.
- Press
Alt + F11to open the VBA Editor. - In the VBA Editor, you’ll write your anonymization code.
Step 2: Write VBA Code for Anonymization
In this step, we’ll create a macro that anonymizes sensitive data in Excel, such as names, phone numbers, email addresses, etc. There are many techniques you can use for data anonymization, but here we’ll demonstrate a few common techniques:
- Shuffling: Randomly shuffling the values in a column (e.g., shuffling names or phone numbers).
- Masking: Replacing values with a pattern (e.g., replacing digits with
X). - Generalization: Changing the values to a more general category (e.g., age ranges).
- Data Perturbation: Adding or subtracting a small amount of noise to make data slightly inaccurate while preserving its utility.
Sample Anonymization Techniques:
1. Shuffling Column Data (Randomize Rows)
This technique involves randomizing the order of data in a column, which anonymizes it without changing the values.
Explanation of the code:
- The
ShuffleDatamacro randomizes the values in the specified range (fromA2:A100in this example). - We load the data into an array, shuffle the array randomly, and then write it back to the original range.
Rndgenerates a random number between 0 and 1, andIntis used to ensure it’s a whole number, ensuring randomness.
2. Masking Data (Replace with « X »)
For sensitive information like phone numbers or email addresses, you may want to replace some or all digits with an X to maintain anonymity
Sub MaskData()
Dim rng As Range
Dim cell As Range
Dim maskedValue As String
' Define the range with the data to mask (Assuming data is in Column B)
Set rng = Range("B2:B100") ' Loop through each cell in the range For Each cell In rng
' Mask the data (replace each character with 'X')
maskedValue = String(Len(cell.Value), "X")
cell.Value = maskedValue Next cell
End Sub
Explanation of the code:
- This macro loops through each cell in the defined range (
B2:B100) and replaces the entire value withXcharacters, preserving the length of the original data.
3. Generalizing Data (Age to Age Range)
Instead of keeping exact ages, you might want to generalize them into ranges (e.g., « 20-30 », « 30-40 »).
Sub GeneralizeData()
Dim rng As Range
Dim cell As Range
Dim age As Integer
Dim ageRange As String
' Define the range containing age data (Assuming ages are in Column C)
Set rng = Range("C2:C100")
' Loop through each cell and generalize the age
For Each cell In rng
age = cell.Value
If age < 20 Then
ageRange = "Under 20"
ElseIf age >= 20 And age < 30 Then
ageRange = "20-29"
ElseIf age >= 30 And age < 40 Then
ageRange = "30-39"
ElseIf age >= 40 And age < 50 Then
ageRange = "40-49"
Else
ageRange = "50+"
End If
' Replace the exact age with the generalized range
cell.Value = ageRange
Next cell
End Sub
Explanation of the code:
- This macro loops through each cell in the
C2:C100range and assigns an age range based on the value. - It replaces the exact age with a more general description, such as « 20-29 » or « 30-39 ».
4. Data Perturbation (Adding Noise)
For numerical data, you can add slight perturbations (noise) to ensure the data is anonymized while keeping it useful.
Sub PerturbData()
Dim rng As Range
Dim cell As Range
Dim noise As Double
Dim originalValue As Double
' Define the range with numeric data (Assuming data is in Column D)
Set rng = Range("D2:D100")
' Loop through each cell in the range
For Each cell In rng
originalValue = cell.Value
' Add random noise between -5% and 5% of the original value
noise = originalValue * (Rnd - 0.5) * 0.1
cell.Value = originalValue + noise
Next cell
End Sub
Explanation of the code:
- This macro adds random noise to each value in the range.
- The noise is between
-5%and+5%of the original value, preserving the data’s general trend but anonymizing it slightly.
Step 3: Run the Macro
To run the macro in Excel:
- After you have written the code in the VBA editor, you can close the editor and go back to the Excel workbook.
- Press
Alt + F8to open the Macro dialog box. - Select the macro you want to run (e.g.,
ShuffleData,MaskData, etc.). - Click Run.
The macro will execute, and you’ll see the anonymized data in the selected range.
Example Output:
Let’s say you have the following data in Column A (Name), Column B (Phone Number), and Column C (Age):
| Name | Phone Number | Age |
|---|---|---|
| John Doe | 123-456-7890 | 28 |
| Jane Smith | 234-567-8901 | 35 |
| Bob White | 345-678-9012 | 42 |
After running the Shuffling macro on Column A, the data might look like this:
| Name | Phone Number | Age |
|---|---|---|
| Bob White | 123-456-7890 | 28 |
| John Doe | 234-567-8901 | 35 |
| Jane Smith | 345-678-9012 | 42 |
After running the Masking macro on Column B, the data will be:
| Name | Phone Number | Age |
|---|---|---|
| John Doe | XXXXXXXXXXXX | 28 |
| Jane Smith | XXXXXXXXXXXX | 35 |
| Bob White | XXXXXXXXXXXX | 42 |
After running the Generalization macro on Column C, the data will become:
| Name | Phone Number | Age |
|---|---|---|
| John Doe | XXXXXXXXXXXX | 20-29 |
| Jane Smith | XXXXXXXXXXXX | 30-39 |
| Bob White | XXXXXXXXXXXX | 40-49 |
Conclusion:
By implementing these anonymization techniques in Excel VBA, you can protect sensitive data while keeping it useful for analysis. This ensures privacy while retaining the value of the data for further processing or reporting.