返回列表 上一主題 發帖

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

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

可以幫我說明附檔中的程式碼的涵意嗎?很好用,但看不懂?所以不知該怎樣修改成自己需要的。

模糊比對.rar (11.43 KB)
Jess

不好意思,因為這個範例檔和我目前要做的工作幾乎沒啥差別,所以才會拿來請教各位。
Jess

TOP

本帖最後由 jesscc 於 2011-5-9 20:40 編輯

非常感謝各位先進的熱心指導,各位大大的功力小弟只能說佩服,但小弟真正的瓶頸,仍未克服,我修改了一下sheet1中的資料,增加了"研發A"、"研發B"並多加了兩個欄位,如此一來sheet2中只要有"研發"字眼的,就都比對不到了,照道理,這並沒有違反資料庫正規化資料唯一性的要求,是VBA沒有這樣的查詢函數嗎?

模糊比對修改後.rar (15.47 KB)
Jess

TOP

本帖最後由 jesscc 於 2011-5-9 22:39 編輯

喔,不!sheet1才是資料庫。
因為sheet2�堛漲r串都比較長,比較亂,所以我在想只要在sheet1�堣髀翵鴩鉹仍X個連續字串都符合,就將相關資料抓回sheet2,是我的想法剛好相反嗎?原始檔案看起來像是這樣比對的啊!

這樣說好了,如果sheet2�埵酗@筆資料"研發ccab",在sheet1�媕雩茯O抓"研發a"吧!
                  如果sheet2�埵酗@筆資料"研發ccba",在sheet1�媕雩茯O抓"研發b"吧!
純粹個人思考。
Jess

TOP

我的邏輯錯了,我以為程式會去分辨最接近"研發"的字串,"研發ccab"--> a離研發最近 ^^,我實在是太...

只差最後一步了,不過現在整個腦袋已經亂掉了,謝謝 Hsieh 大給我的觀念!
還有 oobird 大大寫的我比較能夠看得懂,剛剛用它試著去改我的工作檔案,可是一直出現錯誤,搞得我頭昏腦漲的,可不可以我把工作檔案傳來,您指點我一下該如何改?
Jess

TOP

回 mark15jill 大
確實會有這種情形,不過我會慢慢修正資料庫的資料,這個問題是可以一步步解決的,謝謝你!

我重新上傳了一個檔案,有新增幾欄資料,要同時傳回Sheet2,請 oobird 大幫我看一下,要如何修改好嗎?

模糊比對test.rar (16.19 KB)
Jess

TOP

謝謝 Hsieh 大!剛剛試著去 run 自己的工作檔案,只傳回4欄的資料是ok的,如果我從 Sheet1 抓回的資料改成32欄(公司的資料很龐大),用一個迴圈去跑陣列,結果就沒辦法正常執行了,是陣列的因素嗎?我記得好像在哪裡看過文章說明,陣列的"欄"是不能用迴圈去跑的。是這樣嗎?
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Sheet1
  4. For Each a In .Range(.[B5], .[B56636].End(xlUp))
  5.   For i = 1 To 32
  6.    d(a & "") = Array(a.Offset(, i).Value)     ', a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
  7. Next i
  8. Next
  9. End With
  10. With Sheet2
  11. For Each a In .Range(.[D12], .[D56636].End(xlUp))
  12.     For Each ky In d.keys
  13.        If InStr(a, ky) > 0 Then a.Offset(, 12).Resize(, 32) = d(ky): Exit For
  14.     Next
  15. Next
  16. End With
  17. End Sub
複製代碼
Jess

TOP

Ok了!
可是剛剛仔細檢查了一下,發現比對後傳回來的資料,有很多筆都不是正確的,真是快被這個模糊比對搞瘋了。
Jess

TOP

因為資料庫太龐大,我整理一些較具代表性的,明天傳上來,讓您看看。真的好感謝你,幫我解決了好多問題!
Jess

TOP

本帖最後由 jesscc 於 2011-5-11 21:03 編輯

Hsieh 大:

我已附上工作檔案,資料庫中需要重建檔案的部分,大概都已經有譜了。
目前在資料比對上仍有幾個大問題無法解決:

例如 space,-,Ø,英文字母大小寫不同

只要比對時有出現上面這四種情形,就比對不到了。
之前同事也曾寫過這樣的比對資料程式,大致也是碰到這些瓶頸。

附檔 SPECforMRPtest.xls 的 Sheets("MRP")中有標示紅字的就是比對不到的資料。
Jess

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題