如何在另一个工作表中找到匹配的数据并在Excel中的特定单元格中返回布尔值?

时间:2016-09-20 15:13:51

标签: excel vba excel-vba

我有一个包含2个工作表的Excel工作簿。 "发票"和"产品"。

In" Invoice"我有几列,A("ID")B("DESIGN"),这是从产品表和C("QTE")等中选择的列表。它看起来像这样:

 A    B    C    D ...
---------------------
100   AR
110   BR
120   CR
130   DR

"产品"我还有其他列A("ID")B("DESIGN")C("NAME")D("TYPE")。它看起来像这样:

 A    B     C      D    
----------------------
10    AR   NAME1   TY1
20    BR   NAME2   TY2
30    CR   NAME3   TY2
40    DR   NAME4   TY1

所以,当我选择DESIGN In" Invoice"表(B列),我需要检查并在特定单元格中返回true / false如果所选DESIGN的类型为TY1

示例:

  • 在发票表中:如果我选择ARDESIGN,我希望特定的单元格返回true(因为AR属于TYPE=TY1

  • 在发票表中:如果我选择BRDESIGN,我希望特定的单元格返回false(因为BRTYPE!=TY1

有办法吗?

1 个答案:

答案 0 :(得分:0)

这可能有效。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        Dim sWhatToLook As String
        Dim rng1 As Range
        Dim strSearch As String

        If Target.Column = 2 Then 'for the code to execute clicking on column B only
            sWhatToLook = Target.Value
            Set rng1 = Worksheets("Products").Range("A2:D1000").Find(sWhatToLook, , xlValues, xlWhole) 'Set range (A2:D1000) as needed
            If Not rng1 Is Nothing Then
                If (rng1.Offset(0, 2).Value = "TY1") Then
                    Worksheets("Invoice").Cells(Target.Row, 5) = True
                Else
                    Worksheets("Invoice").Cells(Target.Row, 5) = False
                End If
            Else
                MsgBox sWhatToLook & " not found"
            End If
        End If

    End Sub