2017-06-16 152 views
2

因此,我知道基於標題的大多數人可能都坐在那裏想知道我在說什麼。VBA嘗試將完整字符串與部分字符串進行匹配以查找相應的值

基本上,我有一個約30000個項目的列表,其中有300多個辦事處的辦公室代碼,我需要按地區分解它們。不幸的是,我遇到了一個實際查找它們的問題。

爲了讓你知道我在說什麼,這裏是一個我嘲笑的例子。公司名稱已經明顯改變,所有代碼都是隨機生成的。 http://i.imgur.com/C9LLTgs.png

我遇到的問題與這些名稱的格式有關。

所有的辦公室都是由公司名稱,然後是辦公室代碼,然後是一串字母/數字或甚至可識別其他事物的句子。

不幸的是,這些代碼高度不一致。我用vlookup和搜索函數來玩弄特定的整數,但由於數據的排列方式,結果並不可靠。許多辦公室代碼長度爲3個字符,有些則爲6個,有些甚至以破折號分隔(這不幸使我無法使用搜索,左側和查找的組合查找破折號)。

因此,我試圖弄清楚如何在VBA中創建一個函數來查看數據並找到辦公室列表中的最佳匹配項。

我真的希望有人在這裏能給我一個主意。我嘗試使用模糊查找,但不幸的是,它沒有返回任何我真正能夠使用的東西。

基本上,我試圖找出那些將根據可用辦公室列表搜索每一行並根據第一系列字符順序選擇最佳擬合的東西。

因此,IKEA-OEE-ZOPJSK不會與IKEA-ZOP-OEE相匹配,因爲它所查找的條目不是IKEA-OEE。

感謝您的任何和所有的建議!

回答

1

因此,假設您的數據從A2開始,因爲您沒有包含列標記或行標記。這個公式將進入B2。

您的查找表位於C2:D9。

=INDEX(D:D,AGGREGATE(15,6,ROW($C$2:$C$9)/(ISNUMBER(SEARCH($C$2:$C$9,A2))),1)) 

它會擡頭看整體,所以IKEA-OEE-ZOPJSK將匹配到IKEA-OEE,而不是IKEA-ZOP-OEE

+0

嘿,什麼時候被聚合引入?還沒有使用它,它看起來非常有用,因爲我經常用數組公式來計算我的等價物a la {= sum(iferror(A1:A2,0))} –

+1

要記住關於聚合的事情是,它是一個數組鍵入公式,因此所有相同的限制都適用,但它不需要CSE輸入。此外,只有少數選擇允許像上面那樣進行數組輸入。雖然你的總和例子可以工作:'= AGGREGATE(9,6,A1:A2)'AGGREGATE是在Excel 2010中引入的。 –

+0

這很棒,幾乎完美無缺!我不知道有一個集合命令甚至存在(儘管如果我完全誠實的話,我不會想到像這樣使用它)。 最重要的是,這將工作,無需保存爲啓用宏的文檔,這將在無法啓用宏的某些公司計算機上工作時具有無法估量的價值。 再次感謝! – LostVBAGuy

0

我想我明白你的問題。類似下面的函數應該可以工作,我已經將它設置爲像查找一樣工作,但它會評估表數組,以查看它是否在查找值中最早找到搜索值並返回其中的值。

它也適用於部分字符串,因此使用上面的示例IKEA-ZOP-OEE和表數組OEE ZOP。 ZOP會返回,因爲它是字符串中最早的:

Public Function fxFirstReturn(lookup_value As Range, table_array As Range, column_index_num As Long) As String 
Dim i As Long, j(0 To 2) As Long 

For i = 1 To table_array.Rows.Count 
    j(2) = InStr(1, table_array.Cells(i, 1), lookup_value) 
    If (j(2) < j(0) Or j(0) = 0) And j(2) > 0 Then 
    j(0) = j(2) 
    j(1) = i 
    End If 
Next 

If j(1) = 0 Then 
    fxFirstReturn = "Error" 
Else 
    fxFirstReturn = table_array.Cells(j(1), column_index_num) 
End If 

End Function 
+0

這似乎是非常有用的,不幸的是我有一些麻煩讓它工作。 它一直返回#VALUE!當我嘗試並使用它時。 假設完整的辦公室名稱在A2:A10中,我的查找值在C2:C5中,並且區域在D2:D5中,當我將它輸入到單元格中時,功能應該不是這樣嗎? = fxFirstReturn(C2:C5,A2:a10,2) 還是應該column_index_num是4,因爲d是第四列? 我跑了這兩種方式,但我仍然得到#VALUE!反應和不幸的是,Excel不能一步一步地評估公式。 – LostVBAGuy