2017-09-20 15 views
0

2枚のブック(ロールとロールアップデート)があります。ロール更新シートにはロールの変更と新しいロールが含まれています。ロールシートよりも多くのエントリがありますが、私はロールとロールアップの両方にあるエントリだけを扱いたいと思っています。 RoleUpdates内の列の1つを「ステータス」と呼び、オプションの1つはroleChangeです。ロールシートは、古いロールを持つ更新したいシートです。基本的には、RoleUpdatesのステータス列を調べ、それが "roleChange"の場合は、RoleUpdatesシートにそのロール列をコピーして、名前に基づいてロールシートに貼り付けます。例。Excel - 場合によっては別のシートからコピー貼り付け

roleUpdates Sheet 

COL A  COL B  COL C 
ROLES  NAMES  STATUS 
Teller  David  roleChange 
Customer Tom  noChange 
Admin  Liam  roleChange 
------------- 


    Before Running Macro 
Roles Sheet 
    ------------- 
COL A  COL B 
ROLES  NAMES 
Customer Liam 
Admin  David 
Teller  Tom 
    ------------- 


After Running Macro 
Roles Sheet 
    ------------- 
COL A  COL B 
ROLES  NAMES 
Admin  Liam 
Teller  David 
Customer Tom 
    ------------- 

私はこれが十分にはっきりしたことを望みます。前もって感謝します。

+0

、それは意味がありません。あなたはトムを顧客としてトップに変更していないと表示しています。次の例では、顧客に窓口を切り替えているようです。 – dwirony

答えて

0

ステータスカラムをチェックし、それがロールチェンジであれば、別のシートの名前を検索し、新しい値をroleUpdatesシートから取得します。あなたは、トップアップあなたの例をクリーンアップする必要が

Sub ChangesRoles() 
Dim i As Long, j As Long, sht As Worksheet, lastrow As Long 
Set sht = ThisWorkbook.Worksheets("roleUpdates") 
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

For i = 2 To lastrow 
    If Worksheets("roleUpdates").Range("C" & i).Value = "roleChange" Then 
     For j = 2 To lastrow 
      If Worksheets("Roles Sheet").Range("B" & j).Value = Worksheets("roleUpdates").Range("B" & i).Value Then 
       Worksheets("Roles Sheet").Range("A" & j).Value = Worksheets("roleUpdates").Range("A" & i).Value 
      End If 
     Next j 
    End If 
Next i 

End Sub 

BeforeAfter

関連する問題