2016-04-21 76 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