返回列表 上一主題 發帖

請問規則02F - 04F 如果在Data Base 篩選在這個範圍内的相關資料

回復  198188


    以下方案請試試看:

Option Explicit
Dim A, Z, R&, W, L, i&, Brr, Mrr, Q, Dr ...
Andy2483 發表於 2025-10-27 15:31



這個是製表部分嗎?
我前面Part List 抽取資料部分,能否幫我看看,如附圖規則。因爲這�堨d住,所以會影響制表的結果。

TOP

回復 51# 198188


    "前面Part List 抽取資料部分"  是哪一樓層方案不符合需求?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


以下方案請試試看

Option Explicit
Sub TEST_2()
Dim Brr, Z, Q, i&, j%, N&, T$ ...
Andy2483 發表於 2025-10-13 13:21


Brr = xBook.Sheets("Part List").[A1].CurrentRegion
For i = 2 To UBound(Brr)
   If Z(Brr(i, 7)) > 0 Then
      N = N + 1
      For j = 1 To 13: Brr(N, j) = Brr(i, j): Next
      Brr(N, 3) = Brr(N, 3) * Z(Brr(i, 7))
   End If
Next
If N > 0 Then Sheets("Part List").[A2].Resize(N, 13) = Brr Else MsgBox "Part List_Nothing"



前輩是這個部分的資料不正確,應該以圖片的規則篩選PART LIST資料。

TOP

回復 53# 198188
需要以#13執行#8範例的結果如何錯,正確值又該如何呈現?說明正確與錯誤差異
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188
需要以#13執行#8範例的結果如何錯,正確又該如何呈現?說明正確與錯誤差異
Andy2483 發表於 2025-10-27 19:36




規則有3個:
1) Layout Dwg �堶措牉� 沒有在 Frame per Dwg 出現的,就顯示在 Part List  = 這個ok 了

2) Frame per Dwg 的 欄B 組裝圖號 包含 WO No  欄F - 欄K 的各樣數據字母,就顯示在 Part List = 這個ok 了

3) 圖片Layout Dwg 有下面5個圖號,在Frame per Dwg 沒有出現,所以需要在 Part List �媗膆雈X來。 不過在Part List �堶悸犒牉飽A有可能最後加一個小寫的英文字母,a/b/c/d.... 所以需要再加一個Rule, 如果Part List 最後一個字母是小寫,那麽 Part List 的圖號包含Laybout Dwg 的圖號,就要顯示出來。如圖片。 = 這個沒做到

Layout Dwg�堶惘�
MWB03
MWB04
MWB05
MWB06
MWB07
  
Part List  �堶惘�
MWB03a
MWB04b
MWB05c
MWB06e
MWB07b

TOP

規則有3個:
1) Layout Dwg �堶措牉� 沒有在 Frame per Dwg 出現的,就顯示在 Part List  = 這個o ...
198188 發表於 2025-10-28 09:30


上個貼因爲修改超時,所以改不了,請以這個爲準。



    規則有3個:
1) Layout Dwg �堶措牉� 沒有在 Frame per Dwg 出現的,就顯示在 Part List  = 這個ok 了, 不過需要加上 規則3

2) Frame per Dwg 的 欄B 組裝圖號 包含 WO No  欄F - 欄K 的各樣數據字母,就顯示在 Part List = 這個ok 了,不過多了下面這些不應該出現的圖號
批次次序        樓層        生產單號                     各樣數據
A                    02F-08F        WO-J057-022           WS

在Layout Dwg 沒有下面這些圖號,但是運行後面,Part List 出現這些圖號
WS001, WS003, WS004, WS100,  WS101, WS102, WS600, WS601, WS602, WS603

3) 圖片Layout Dwg 有下面5個圖號,在Frame per Dwg 沒有出現,所以需要在 Part List �媗膆雈X來。 不過在Part List �堶悸犒牉飽A有可能最後加一個小寫的英文字母,a/b/c/d.... 所以需要再加一個Rule, 如果Part List 最後一個字母是小寫,那麽 Part List 的圖號包含Laybout Dwg 的圖號,就要顯示出來。如圖片。 = 這個沒做到

Layout Dwg�堶惘�
MWB02
MWB03
MWB04
MWB05
MWB06
MWB07

  
Part List  �堶惘�
MWB02b
MWB03b
MWB04b
MWB05b
MWB06b
MWB07b

TOP

回復 55# 198188


    請將以下
For i = 2 To UBound(Brr)
   If Z(Brr(i, 7)) > 0 Then
      N = N + 1
      For j = 1 To 13: Brr(N, j) = Brr(i, j): Next
      Brr(N, 3) = Brr(N, 3) * Z(Brr(i, 7))
   End If
Next

改為
For i = 2 To UBound(Brr)
   If Brr(i, 7) Like "*[a-z]" Then Q = Left(Brr(i, 7), Len(Brr(i, 7)) - 1) Else Q = ""
   If Z(Brr(i, 7)) > 0 Or Z(Q) > 0 Then
      N = N + 1
      For j = 1 To 13: Brr(N, j) = Brr(i, j): Next
      Brr(N, 3) = Brr(N, 3) * Z(Brr(i, 7))
   End If
Next

試試看
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 55# 198188


   
Brr(N, 3) = Brr(N, 3) * Z(Brr(i, 7))

這行也要改成以下,數量才會是0

Brr(N, 3) = Brr(N, 3) * (Z(Brr(i, 7)) + Z(Q))
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

  1. Sub TEST_2()
  2. Dim Brr, Z, Q, i&, j%, N&, T$, T1$, MyPath$, xFile$, xBook As Workbook, MyBook As Workbook, Re
  3. Application.ScreenUpdating = False
  4. With Sheets("Layout Dwg")
  5.    .[A2].Resize(.UsedRange.Rows.Count, 4).ClearContents
  6. End With
  7. With Sheets("Frame per Dwg")
  8.    .[A2].Resize(.UsedRange.Rows.Count, 6).ClearContents
  9. End With
  10. With Sheets("Part List")
  11.    .[A2].Resize(.UsedRange.Rows.Count, 13).ClearContents
  12. End With
  13. Set MyBook = ThisWorkbook
  14. MyPath = MyBook.Path & "\"
  15. xFile = "Data Base.xlsx"
  16. On Error Resume Next
  17. Set xBook = Workbooks(xFile)
  18. If xBook Is Nothing Then
  19.    Set xBook = Workbooks.Open(MyPath & xFile, , True, , "")
  20.    Re = True
  21.    MyBook.Activate
  22. End If
  23. Set Z = CreateObject("Scripting.Dictionary")
  24. On Error GoTo 0
  25. T = Sheets("Read").[A2] & "|" & Sheets("Read").[C2]
  26. T1 = Sheets("Read").[B2]
  27. With xBook.Sheets("WO No")
  28.    For i = 2 To .[A65536].End(3).Row
  29.       If .Cells(i, "B") & "|" & .Cells(i, "D") = T Then
  30.          .Rows(i).Copy Sheets("WO No").Rows(2)
  31.          For j = 6 To 11
  32.             Z("|" & .Cells(i, j)) = ""
  33.          Next
  34.          Sheets("Read").[A2].Resize(, 3).Copy Sheets("WO No").[B2]
  35.          GoTo 11
  36.       End If
  37.    Next
  38.    MsgBox "Nothing": Exit Sub
  39. End With
  40. 11
  41. If T1 Like "##F-*##F" Then
  42.    For i = Val(T1) To Val(StrReverse(Mid(StrReverse(T1), 2, 2)))
  43.       Z(Format(i, "00F")) = ""
  44.    Next
  45.    Else
  46.    Q = Split(T1 & "&" & T1, "&")
  47.    For i = 0 To UBound(Q)
  48.       Z(Q(i)) = 0
  49.    Next
  50. End If
  51. Brr = xBook.Sheets("Layout Dwg").[A1].CurrentRegion
  52. For i = 2 To UBound(Brr)
  53.    If Z.Exists(Brr(i, 2)) Then
  54.       If Brr(i, 4) = Sheets("Read").[A2] Then
  55.          Z(Brr(i, 1)) = Z(Brr(i, 1)) + Val(Brr(i, 3))
  56.          N = N + 1
  57.          For j = 1 To 4: Brr(N, j) = Brr(i, j): Next
  58.    End If
  59.    End If
  60. Next
  61. If N > 0 Then Sheets("Layout Dwg").[A2].Resize(N, 4) = Brr: N = 0 Else MsgBox "Nothing under the floor": GoTo 12
  62. Brr = xBook.Sheets("Frame per Dwg").[A1].CurrentRegion
  63. For i = 2 To UBound(Brr)
  64.    If Z.Exists("|" & Left(Brr(i, 2), 2)) And Z(Brr(i, 1)) > 0 Then
  65.       N = N + 1
  66.       For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
  67.       Brr(N, 5) = Brr(N, 5) * Z(Brr(i, 1))
  68.    End If
  69. Next
  70. If N > 0 Then Sheets("Frame per Dwg").[A2].Resize(N, 6) = Brr: N = 0 Else MsgBox "Frame per Dwg_Nothing"
  71. Brr = xBook.Sheets("Part List").[A1].CurrentRegion
  72. For i = 2 To UBound(Brr)
  73.    If Brr(i, 7) Like "*[a-z]" Then Q = Left(Brr(i, 7), Len(Brr(i, 7)) - 1) Else Q = ""
  74.    If Z(Brr(i, 7)) > 0 Or Z(Q) > 0 Then
  75.       N = N + 1
  76.       For j = 1 To 13: Brr(N, j) = Brr(i, j): Next
  77.       Brr(N, 3) = Brr(N, 3) * (Z(Brr(i, 7)) + Z(Q))
  78.    End If
  79. Next
  80. If N > 0 Then Sheets("Part List").[A2].Resize(N, 13) = Brr Else MsgBox "Part List_Nothing"
  81. 12: If Re = True Then xBook.Close 0
  82. End Sub
複製代碼
回復  198188


   
Brr(N, 3) = Brr(N, 3) * Z(Brr(i, 7))

這行也要改成以下,數量才會是0

Br ...
Andy2483 發表於 2025-10-28 10:48


這個不對,改了這個 Frame per Dwg 變成了 只有 WS 的組裝圖號,其他的不出現。

我剛剛說的是針對 Part List 的内容, Frame per Dwg 之前的内容是正確的。

Frame per Dwg 内容規則:
在 Frame per Dwg 導出 與 Layout Dwg 相同的分佈圖號,Layout Dwg相同圖號數量相加 然後跟 Frame per Dwg 數量相乘

Part List  内容規則:
1) Layout Dwg 分佈圖號 在 Frame per Dwg �堶惆S有出現的,要在 Part List 出現,數量相乘
2)在上面規則下,附加多一個條件,如果 Part List 分佈圖號 最後一個字母是小寫英文字母,那麽 Part List 分佈圖號 包含 Layout Dwg 分佈圖號 的也顯示出來。
3)Frame per Dwg 的組裝圖 欄B 含有 WO No 的 欄 F - K 各樣數據字母,要在 Part List 出現 數量相乘

TOP

回復 59# 198188


    Layout Dwg 分佈圖號 在 Frame per Dwg �堶惆S有出現的,要在 Part List 出現,數量相乘
這兩表欄位不同! 該如何 在 Part List 出現,數量相乘
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題