所以我已经阅读了很多关于反向vlookup和在excel中查找文本中的文本字符串的内容,但是......
我有一个问题:
品牌名称|型号|加马
在另一张纸上有一栏:
设备
我需要的是从"设备"中查找值。 "模型"中的列并展示" Gama"旁边的那个设备。
问题是:
1- VLOOKUP或MATCH / INDEX不允许我搜索范围或在表格矩阵之外显示结果(?)我正在查看
2-在"设备"我有品牌,型号,颜色,设备容量等等,所有这些都在同一个单元格中,没有特定的顺序,并且通过定界分离"将是一个月的组织;所以我需要看看那个单元格的某些部分是否匹配"模型"的任何部分。另一张纸上的单元格。
我的朋友告诉我这应该在sql中简单得多,但因为即使在vba中我也获得了极简的经验...
我甚至不知道是否可以这样做,但无论如何都要提前感谢。
答案 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))