返回列表 上一主題 發帖

[發問] 幫忙解釋這個模糊比對範例檔

先從你的需求開始,你是要在sheet2中尋找有sheet1的A欄字串
也就是說Sheet2中有包含Sheet1的字串,然後將代號、類別填到Sheet2
那試問,"研發A"、"研發B"在Sheet2中的資料你如何能找到?
A8內容"(100年3月2日)研發1"
他並未出現"研發A"或"研發B"
所謂模糊比對是說字串中包含關鍵字,還可能出現其他字元
就因為你的關鍵字現在是"研發A"或"研發B"
那麼要在尋找字串中有出現"研發A"或"研發B"
才會被認為比對成功
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2011-5-9 23:47 編輯

"研發ccba"怎會是有連續字串為"研發b"呢?
這樣說吧
你是要在"研發ccba"中找看看是否有"研發a"或"研發b"
那你把"研發ccba",每3個字切割會得到
"研發c"、"發cc"、"ccb"、"cba"
這裡面會有"研發a"或"研發b"嗎?
學海無涯_不恥下問

TOP

回復 14# jesscc
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Sheet1
  4. For Each a In .Range(.[B5], .[B56636].End(xlUp))
  5.    d(a & "") = Array(a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
  6. Next
  7. End With
  8. With Sheet2
  9. For Each a In .Range(.[D12], .[D56636].End(xlUp))
  10.     For Each ky In d.keys
  11.        If InStr(a, ky) > 0 Then a.Offset(, 4).Resize(, 4) = d(ky): Exit For
  12.     Next
  13. Next
  14. End With
  15. End Sub
複製代碼
學海無涯_不恥下問

TOP

這段就是你的資料範圍對嗎?
For i = 1 To 32
  d(a & "") = Array(a.Offset(, i).Value)     ', a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
Next i
這樣單筆資料還是只有4欄
改成
Dim Ar(32)
For i = 0 To 31
  Ar(i) = a.Offset(, i).Value
Next i
d(a & "") =Ar
這樣就有32欄資料
學海無涯_不恥下問

TOP

回復 18# jesscc

資料不正確有可能是SHEET2的字串中含有2組以上的關鍵字
程式會認定第一個比對到的關鍵字做判斷
或許你要在關鍵字中歸類下功夫
上傳你的關鍵字清單及錯誤的資料看看才能確定出錯的原因
學海無涯_不恥下問

TOP

space個數不同,大小寫不同,有-跟沒-
599-252  Washer與599-252 Washer差了一個space
110334-1-ZA與110334-1-Z-A差了一個-
40366109240 pIN若不分大小寫怎麼判定是40366109240 PIN還是40366109240  Pin
程式的邏輯就只是把關鍵字是否存在於搜尋字串內
若搜尋字串不包含完整關鍵字,當然比對不到
學海無涯_不恥下問

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題