【问题标题】:Looking up text with a string in it查找包含字符串的文本
【发布时间】:2016-04-22 04:40:23
【问题描述】:

所以我已经阅读了很多关于反向 vlookup 和在 excel 文本中查找文本字符串的内容,但是...... 我有一个电话:
品牌名称 |型号 |伽马

在另一张纸上有一列:
设备

我需要从“型号”的“设备”列中查找值,并在其旁边显示该设备的“Gama”。
问题是:
1- VLOOKUP 或 MATCH/INDEX 不会让我搜索范围或显示表格矩阵之外的结果(?)我正在调查
2-在“设备”单元格中我有品牌、型号、颜色、设备容量等,都在同一个单元格中,没有特定的顺序,“分隔符”将是一个月来组织;所以我需要查看该单元格的某些部分是否与另一张表中“模型”单元格的任何部分匹配。

我的朋友告诉我,这在 sql 中应该会简单得多,但因为即使在 vba 中我的经验也很少......

我什至不知道这是否可以做到,但无论如何提前谢谢。

【问题讨论】:

  • 一般来说,这里不是这样外包代码的地方。您应该尝试一些东西,发布您尝试过的内容,然后发布您在使用该方法时遇到的具体问题。无论如何,我帮助了这个,但在未来,请尝试这样做。
  • 抱歉,代码?我一直在使用公式,并没有得到解决方案。我试过 =DESREF(Hoja1!$A$1,COINCIDIR(Hoja1!G9,Hoja1!$C$3:$C$227),3) 但后来我意识到我将型号分开并不重要“Hoja1!G9”(我的办公室是西班牙语)因为我仍然需要公式中的所有型号。在此之前尝试匹配: =COINCIDIR(""&Hoja1!G205&"",Hoja1!C3:C227,0) 仍然只给我一个地址,并且只看一个型号。我真的不知道该怎么做!
  • 您尝试过的功能,然后以及您尝试过的功能的问题。您可以尝试的另一件事是询问您的朋友如何在 SQL 中执行此操作。如果对他们来说很简单,他们应该会花很少的时间来帮助你,并且在这个过程中,你会学习一些 SQL。

标签: excel-2010


【解决方案1】:

制作一个新模块并将以下用户定义函数(UDF)放入模块中:

Function testFunc(myRange As Range, myVal As String) As String

    Dim myCell As Range

    For Each myCell In myRange
         If InStr(1, myVal, myCell.Value, vbTextCompare) <> 0 Then
             testFunc = myCell.Address
             Exit Function
         End If
    Next myCell

    testFunc = "NOT FOUND"

End Function

然后,在您的数据旁边的单元格中(在我的情况下为单元格 F3),输入:

 =testFunc($B$3:$B$6,E3)

您需要将“$B$3:$B$6”替换为包含型号的列。将“E3”替换为包含“设备”信息的单元格。

然后,在此右侧的单元格中,放入

=IF(F3="NOT FOUND", F3, OFFSET(INDIRECT(F3),0,1))

显然,将“F3”替换为您将前一个函数放入的任何单元格。

这会给你结果。

这可能不是完成此操作的最佳方法,但它会起作用。

编辑

如果它们在不同的工作表上,则编辑该行:

 testFunc = myCell.Address

到

testFunc = myCell.Worksheet.Name & "!" & myCell.Address

或

将单元格中的公式更改为:

=IF(F3="NOT FOUND", F3, OFFSET(INDIRECT("SheetName!" & F3),0,1))

【讨论】:

  • 我在两列中都收到“未找到”消息。 PS:“设备”列在不同的工作表中(不知道是否重要)
  • 您需要输入型号所在的范围,包括图纸名称,所以它看起来像“Sheet4!$C$5:$C$8”,其中“Sheet4”被替换为工作表名称(您仍然需要感叹号)和单元格被实际单元格替换。
  • 另外,请确保您使用 $ 锚定范围,否则当您将其复制下来时,它会移动范围。
  • 另一种选择是命名范围,然后使用像“=testFunc(myNamedRange, E3)”这样的函数
  • 为了清楚起见,我将函数重命名为“testFunc”不是一个好名字。我只是用它来演示它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多