Excel vba查找单词然后执行vlookup

时间:2018-03-29 02:00:38

标签: excel vba find vlookup

我试图在excel中编写vba代码来执行以下操作序列:

  • 确定一个特定的"字"包含在sheet1的单元格W8中;
  • 如果"字"找到了,然后;
  • 在工作表2上搜索范围A3:A171,用于" Word2"包含在细胞W7中 Sheet 1中
  • 如果这" Word2"在该范围内找到,然后
  • sheet1上的Cell V3必须显示该行的B列中的值 "字2"被发现了。

我一直试图通过各种vlookup实现这一目标并找到没有运气的功能组合(我是新手)。

真的很感激任何可以提供帮助的人。这肯定让我很头疼!

如果您需要更多信息或上述步骤不清楚,请与我们联系。

Sooo .....这就是我目前使用VBA代码的地方。请记住,我希望它能够执行Loocid在下面提供的确切功能....

Sub IF_FUNCTION()
    If InStr(W8.Value, "Word1") > 0 Then
        Range("V3").Value = Application.WorksheetFunction.Index(Sheets("Sheet2").Range("B3:B171"), Application.WorksheetFunction.Match(Range("W7").Value, Sheets("Sheet2").Range("A3:A171"), 0), "")
    End If
End Sub

3 个答案:

答案 0 :(得分:0)

如斯科特所述,你可以在没有VBA的情况下做到这一点。

在V3中尝试此公式:

=IF(W8<>"word", INDEX(sheet2!B3:B171, MATCH(W7, sheet2!A3:A171, 0)), "")

答案 1 :(得分:0)

喜欢这个吗?

Option Explicit

Sub IF_FUNCTION()

Dim wb As Workbook
Dim ws As Worksheet
Dim ws2 As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Sheet1")
Set ws2 = wb.Worksheets("Sheet2")

With ws

    If InStr(1, .Range("W8"), "Word1") > 0 Then
        .Range("V3") = Application.WorksheetFunction.Index(ws2.Range("B3:B171"), Application.WorksheetFunction.Match(.Range("W7"), ws2.Range("A3:A171"), 0), 1)
    End If

End With

End Sub

答案 2 :(得分:0)

谢谢QHarr。我刚刚结束使用以下内容。它有效,但你认为速度等会有任何问题吗?我使用它的次数越多?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$W$8" Then
    Range("V3").Value =[IF(W8<>"Word1",INDEX(sheet2!B3:B171,MATCH(W7,Sheet2!A3:A171,0)),"")]
  End If
End Sub

感谢Loocid的帮助,无法完成该功能。