2016-10-25 5 views
0

私は現在、仕事中のユーザーアクセス監査を行っています。現在のすべてのユーザーアクセスをExcelにダンプできる単純なツールを生成しようとしています。それらはテンプレートによって定義される必要があります。テンプレートとデータの間にVBAルックアップの相違があります

最後の2週間は、ピボットテーブルの生成に費やされていましたが、不一致を手動で確認するのに費やされましたが、最近の変更のため再確認が必要です。

シナリオ;

Excelでは、ユーザーID、ロール、責任(3列)のエクスポートがあります。新しい行では、データの変更は次のユーザーまでの責任だけです。スプレッドシートには、数千人のユーザーと、300の異なる役割と、何千という責任があります。

2番目のスプレッドシートには、ロールに必要な実際のロールと責任(2列)用のテンプレートがあります。または「テンプレート」などのユーザーIDの代わりに識別子を持つ列を追加する場合は3列

実際の役割と一致しないすべてのユーザーIDのリストを生成するためにVBAを使用できると感じています。しかし、私は他のアイデアは公開されていますが、ホワイトリストにないソフトウェアは使用できません。

すなわち、欠落や余分な責任を持つユーザーのリストを提供

同じ役割について多くのユーザーは最初のシートであるが、2枚目役割ごとに1つだけのテンプレートがあることもを注意すべきです。

私はVBAスクリプティングの相対的な意見であり、このタスクを簡単なプロセスにする助けとオプションを本当に感謝しています。

あなたにアドバイスをしてもらいたいことを教えてください。

+0

ユーザー名とロールがエクスポートと一致する2番目のワークブックからすべての値を削除して、ユーザーに誤って割り当てられたすべてのロールにリストを縮小できますか? – Nulled

答えて

0

ワークシート1:実際のユーザー名(列A)、実際の役割(列B)。 ワークシート2:不適切なユーザー名(列A)、不適切な役割(列B)。

この基本スクリプトは、ワークシート1に存在するユーザー名とロールの値を取得し、ワークシート2の両方の列に対して値をチェックします。これらが一致しない場合(正しくない場合)、不正な行が削除されますワークシート(2)から。

あなたは、無効な役割の背景色を変更すると、基準が満たされたときに何が起こるかを変更することができ、など

Public Sub removeIncorrectRoles() 
    For Each rngCell In Worksheets(1).Range("A1:A" & Range("A1").End(xlDown).Row) 'Loops through usernames within the "correct" sheet. 
     strUser = rngCell.Value 'Stores current username to avoid looking back to worksheet. 
     strRole = rngCell.Offset(, 1).Value 'Stores current role to avoid looking back to worksheet. 
     For Each rngCell2 In Worksheets(2).Range("A1:A" & Range("A1").End(xlDown).Row) 'Loops through usernames within the "incorrect" sheet. 
      If rngCell2.Value = strUser Then 'If the username in the incorrect page matches the correct name. 
       If rngCell2.Offset(, 1).Value = strRole Then 'If the role on the "incorrect" page matches the actual role. 
       'Do Nothing 
       Else 
        rngCell2.EntireRow.Delete 'If the usernames match but the role doesn't then the line is removed. 
       End If 
      End If 
     Next rngCell2 'Checks the next "incorrect" page value. 
    Next rngCell 'Assigns the next "correct" page name and roll. 
End Sub 

動作するはずですが、これは、非常に効率的ではない可能性がある心に留めてください。何かが必要な場合は教えてください。

関連する問題