【问题标题】:Excel vba to find a word then perform vlookupExcel vba 查找单词然后执行 vlookup
【发布时间】:2018-03-29 02:00:38
【问题描述】:

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

  • 判断 sheet1 的 W8 单元格中是否包含特定的“单词”;
  • 如果找到“单词”,那么;
  • 在 sheet2 的 A3:A171 范围内搜索包含在单元格 W7 中的“Word2” 表 1,
  • 如果在范围内找到此“Word2”,则
  • sheet1 上的单元格 V3 必须在该行的 B 列中显示值 找到“Word2”。

我一直在尝试通过各种 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

【问题讨论】:

  • 为什么选择 vba,而不仅仅是一个公式?
  • 我需要遍历上述序列的许多变体来为单元格 V3 提供不同的答案,所以我认为 vba 将是实现这一目标的最佳方式。

标签: excel vba find vlookup


【解决方案1】:

正如 Scott 所说,您可以在没有 VBA 的情况下做到这一点。

在 V3 中试试这个公式:

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

【讨论】:

  • =IF(W8"word", INDEX(sheet2!B3:B171, MATCH(W7, sheet2!A3:A171, 0)), "")
  • 啊,是的,错过了值在同一张纸上。那么它对你有用吗?
  • 谢谢!我稍微修改了它以包含 sheet2! INDEX 之后的标识符,但这正是我在 VBA 中需要的。我想在同一个单元格中运行此代码的变体,这就是为什么我认为 VBA 是最好的原因。
  • 有人能帮我把上面的函数改成VBA吗?
【解决方案2】:

像这样?

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

【讨论】:

    【解决方案3】:

    感谢 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 的帮助,如果没有该功能,将无法做到这一点。

    【讨论】:

    • 什么意思?
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多