返回列表 上一主題 發帖

[發問] 如何使用VBA將個資隱碼

[發問] 如何使用VBA將個資隱碼

本帖最後由 coldedge 於 2020-7-22 11:44 編輯

各位好
因為個資防範的關係,我想要在報表中「姓名」、「地址」欄位將指定的字元以***來隱碼。雖然使用Replace的函數可以達到效果,可是因為必須在報表在另加一個欄位去取得。
是否有辦法使用VBA,將現有的欄位範圍圈選後,依照指定邏輯打星號隱碼呢?
謝謝大家!

姓名地址打星號.PNG
2020-7-22 11:44

回復 1# coldedge

需求

是否有辦法使用VBA,將現有的欄位範圍圈選後,依照指定邏輯打星號隱碼呢?   

自己選範圍,選完後執行巨集,程式如下

Sub test()
Application.ScreenUpdating = False
For Each rg In Selection
  If Len(rg) = 3 Then rg.Value = Left(rg, 1) & "*" & Right(rg, 1)
  If rg Like "*#*" Then For i = 0 To 9: rg.Value = Replace(rg, i, "*"): Next
Next
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 2# n7822123


    謝謝您,真得幫了我一個大忙,用短短的語法就解決了我大大的問題。感謝:)

TOP

回復 3# coldedge

可搭配快捷鍵,讓使用上更方便

搭配快捷鍵更方便.png
2020-7-23 10:59
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 4# n7822123


謝謝您,這樣操作起來更快了:D :D :D
另外能否再請教一個問題? 因為我發現地址數字若是屬於全形的字元,就會無法打星號。是否有其他的寫法呢? 或是在打星號之前,可再加上一段語法把指定範圍的字元由全形變更為半形? 感謝!

TOP

A/B欄同時選取

Sub test111()
With Selection
     For i = 0 To 9
         .Replace i, "*", Lookat:=xlPart
         .Replace StrConv(i, vbWide), "*"
     Next i
     For Each rg In .Columns(1).Cells
         If rg <> "" Then rg.Value = Application.Replace(rg, 2, 1, "*")
     Next
End With
End Sub


==============

TOP

回復 6# 准提部林


    謝謝版主的幫忙,全形字元無法打星號的問題也解決了,雖然VBA內有些語法,以我目前程度還是看不太懂,但是我會在找書籍努力去研究。真得很感謝大家:)

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題