查找带有字符串的文本

时间:2016-04-21 17:11:35

标签: excel-2010

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

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

我需要的是从"设备"中查找值。 "模型"中的列并展示" Gama"旁边的那个设备。
问题是:
1- VLOOKUP或MATCH / INDEX不允许我搜索范围或在表格矩阵之外显示结果(?)我正在查看
2-在"设备"我有品牌,型号,颜色,设备容量等等,所有这些都在同一个单元格中,没有特定的顺序,并且通过定界分离"将是一个月的组织;所以我需要看看那个单元格的某些部分是否匹配"模型"的任何部分。另一张纸上的单元格。

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

我甚至不知道是否可以这样做,但无论如何都要提前感谢。

1 个答案:

答案 0 :(得分:0)

创建一个新模块并将以下用户定义函数(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”替换为您将前一个函数放入的单元格。

这会给你结果。

这可能不是 BEST 完成此任务的方式,但它会起作用。

<强> 修改

如果它们在不同的纸张上,则编辑该行:

 testFunc = myCell.Address

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

OR

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

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