如果下拉列表更新,则更新结果(清除最后结果)

时间:2016-11-17 02:19:11

标签: excel excel-vba vba

我在下拉列表中有不同的名称(客户经理),每个客户经理都有1个或多于1个'SID'(6位数字)。如果我选择具有3个SID的“A”(客户经理),如果但是我想看到“B”客户经理的SID只有1个SID,那么我想清除最后的结果并仅显示给B客户经理,但在我的代码中,最后的结果仍然存在,代码更新了'B'的第一个SID,并保留了其他两个SID为'A'。

如果我选择“B”,我不需要“A”SID(它应该只显示一个并清除休息单元

这是我的代码:

Sub Discrepancies_by_Acc_Mgr()

''SIDs are in column 'D' in my Data,
''Account manager names are in Column 'W',
'' Column 'Z3' where i have my drop down list,
'' From Column 'Z6' where i want to start print the SIDs if find in the data

    s = 6
    For i = 2 To 25000
        If (Worksheets("Data").Range("W" & i)) =(Worksheets("Data").Range("Z3"))  Then
            Worksheets("Data").Range("Z" & s) = Worksheets("Data").Range("D" & i) 
            s = s + 1
        End If

    Next

End Sub

1 个答案:

答案 0 :(得分:0)

在编写结果之前,只需清除单元格的内容:

Sub Discrepancies_by_Acc_Mgr()
    Dim s As Long
    Dim i As Long

    With Worksheets("Data")  
        'Clear existing contents if they exist
        If Not IsEmpty(.Range("Z6")) Then  
            .Range("Z6:Z" & .Range("Z" & .Rows.Count).End(xlUp).Row).ClearContents
        End If

        s = 6
        For i = 2 To 25000
            If .Range("W" & i).Value = .Range("Z3").Value  Then
                .Range("Z" & s).Value = .Range("D" & i).Value
                s = s + 1
            End If
        Next
    End With
End Sub