返回列表 上一主題 發帖

[發問] 列出更多的對應資料

本帖最後由 軒云熊 於 2020-9-6 22:21 編輯

回復 51# qaqa3296
剛才試了一下如果只搜尋這3個
A02532             R                252-1006
M00050             外胎       
M00001             外框                100-1001
結果會變成這樣 ...這結果是否有錯誤 ?  外胎和外框  是只要有新舊的版本都要列出  還是要指定的品號 列出一個?


javascript:;

javascript:;
未命名01.png
未命名02.png

TOP

本帖最後由 軒云熊 於 2020-9-7 23:14 編輯

回復 55# qaqa3296
改好了 麻煩你了 有空再幫我測試一下 看看有沒有錯誤   
javascript:;


javascript:;


javascript:;
未命名1.png
未命名2.png

結果0907.rar (44.75 KB)

TOP

回復 55# qaqa3296
剛才發現 判斷有錯誤 改了一下 ...有空幫我測試一下 看看還有沒有錯誤的地方  謝謝你

javascript:;

結果0907_8.rar (46.66 KB)

TOP

本帖最後由 軒云熊 於 2020-9-9 17:42 編輯

回復 58# qaqa3296
謝謝你 幫我測試  其實 那還是有問題  就是會重複抓 第3攔的資料
因為 有時候第3攔 是空白的 有時候不是 所以想了最笨的方式 就是刪除重複 但這不是一個好方式
不知道該如何判斷.. 不過還是謝謝你願意花時間幫我測試 還有準大們的規則 可以解決這個複雜的格式問題 ..
其實字典的其中一個特點 是可以刪除重複  但我不會用 因為那不是那麼直觀 不太好理解
準大的字典運用我也看不明白 只是 猜測 應該是 把 1,3 欄的資料 放到字典裡 利用變數跟符號紀錄字典位置
在抓出來比對 但是 如何判斷我就不太明白了...

TOP

本帖最後由 軒云熊 於 2020-9-11 10:58 編輯

回復 60# 准提部林
請問 準提大大 能不能寫成程式 這樣會較好理解 位置的運作方式  如果可以的話 ^^"  因為 放到字典裡 的資料位置  
不太明白是如何指定單一資料取出來

TOP

本帖最後由 軒云熊 於 2020-9-12 17:39 編輯

回復 62# 准提部林
謝謝準大的指導  但這方式  只是在字典裡刪除重複而已  不過應該會比較快一點點  字典判斷重複陣列不提取的方式還在努力...
  1. Public Sub 陣列加Function加字典練習()
  2. Application.ScreenUpdating = False
  3. If [成果!A1] <> "" Then [成果!A1].CurrentRegion.Clear
  4. Crr = [目標!A1].CurrentRegion
  5. Brr = [庫存!A1].CurrentRegion
  6. ReDim Drr(1 To UBound(Brr, 1), 1 To UBound(Brr, 2))
  7. Set xD = CreateObject("Scripting.Dictionary")
  8.     For i = 1 To UBound(Crr)
  9.         A3 = 分割文字(Trim(Crr(i, 3)))
  10.         A1 = Trim(Crr(i, 1))
  11.         For N = 1 To UBound(Brr)
  12.             B3 = 分割文字(Trim(Brr(N, 3)))
  13.             B1 = Trim(Brr(N, 1))
  14.             If A1 Like B1 Or A3 Like B3 And A3 <> "" Then
  15.                xD(Brr(N, 1)) = Brr(N, 1)
  16.             End If
  17.         Next N
  18.     Next i
  19.     For E = 1 To UBound(Brr)
  20.         If Brr(E, 1) = xD(Brr(E, 1)) Then
  21.             G = G + 1
  22.             For F = 1 To UBound(Brr, 2)
  23.                 Drr(G, F) = Brr(E, F)
  24.             Next F
  25.         End If
  26.     Next E
  27. Erase Brr, Crr
  28. [成果!A1].Resize(G, UBound(Drr, 2)) = ""
  29. [成果!A1].Resize(G, UBound(Drr, 2)) = Drr
  30. Erase Drr
  31. Sheets(3).Activate
  32. Cells(1, 1).Select
  33. Application.ScreenUpdating = False
  34. End Sub
  35. '====================================================================
  36. Public Function 分割文字(A3)
  37.     Drx = Array("-", ".")
  38.     A7 = "": A8 = ""
  39.     For A9 = LBound(Drx) To UBound(Drx)
  40.         For A0 = 1 To Len(A3)
  41.             If InStr(Mid(Right(A3, A0), 1, 1), Drx(A9)) Then
  42.                 A8 = Mid(Right(A3, A0), 1, A0)
  43.                 A7 = Mid(A3, 1, Len(A3) - Len(A8))
  44.             Exit For
  45.             End If
  46.         Next A0
  47.     Next A9
  48.     If A7 = "" Then A7 = A3
  49.     If A7 = "" Then Exit Function
  50.     If Left(A7, 4) Like "####" Then
  51.        X = Mid(A7, 1, 4)
  52.     ElseIf Left(A7, 5) Like "####[A-Z]" Then
  53.        X = Mid(A7, 1, 5)
  54.     ElseIf Left(A7, 5) Like "[A-Z]####" Then
  55.        X = Mid(A7, 1, 5)
  56.     ElseIf Left(A7, 8) Like "???-????" Then
  57.        X = Mid(A7, 1, 8)
  58.     End If
  59.     If X = "" Then X = A3
  60.     分割文字 = X
  61. End Function
複製代碼

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題