2016-04-21 86 views
0

所以我读了很多关于反向查找和查找excel文本中的文本字符串,但是... 我有一个teble:
品牌名称|模型|伽马查找带有字符串的文字

,并在另一个表列:
设备

我需要的是从“设备”列中查找值中的“模型”,并显示“伽马”该设备的旁边。
问题是:
1- VLOOKUP或MATCH/INDEX不会让我搜索范围或显示表格矩阵外部的结果(?)我正在研究
2-在“设备”单元中我有品牌,型号,颜色,设备能力等,都在同一个单元格中,并且没有特定的顺序,“按划分分开”将是一个月组织;所以我需要查看该单元格的某个部分是否与其他表格中“模型”单元格的任何部分相匹配。

我的朋友告诉我,这应该在SQL中简单了很多,但因为我已经得到了即使在VBA minnimal体验...

我甚至不知道这是可以做到的,但在此先感谢无论如何。

+0

一般来说,这不是外包这种代码的地方。你应该尝试一些东西,发布你所尝试的东西,然后发布你所采用的具体问题。无论如何我都会帮忙,但是在将来,请尽量做到这一点。 – OpiesDad

+0

对不起,密码?我一直在使用公式,并没有得到任何解决方案。我尝试过 = DESREF(Hoja1!$ A $ 1,COINCIDIR(Hoja1!G9,Hoja1!$ C $ 3:$ C $ 227),3) 但是后来我意识到我没有模型并不重要在“Hoja1!G9”(我的办公室是西班牙语)中分开的号码,因为我仍然需要公式中的所有型号。 在尝试匹配之前: = COINCIDIR(“*”&Hoja1!G205&“*”,Hoja1!C3:C227,0) 它仍然只给我一个地址,只看一个型号。 我几乎不知道如何做到这一点! – Johannes

+0

您尝试过的函数,然后与您尝试的函数有关的问题。你可以尝试的另一件事是问你的朋友如何在SQL中做到这一点。如果对他们来说非常简单,那么他们需要很少的时间来帮助你,在这个过程中,你会学到一些SQL。 – OpiesDad

回答

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的方法来完成这个,但它会工作。

EDIT

如果它们是在不同的片材,然后编辑该行:

testFunc = myCell.Address 

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

OR

变化式中该单元为:

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

我在这两列中都收到“未找到”消息。 PS:“设备”列在不同的表格中(不知道是否重要) – Johannes

+0

您需要放置型号所在的范围,包括表格名称,因此它看起来像“Sheet4!$ C $ 5 :$ C $ 8“其中”Sheet4“被工作表名称替换(您仍然需要感叹号)并且单元格被实际单元格替换。 – OpiesDad

+0

此外,请确保您使用$锚定范围,否则当您将其复制时,它会移动范围。 – OpiesDad