返回列表 上一主題 發帖

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

本帖最後由 198188 於 2025-10-30 11:21 編輯
回復  198188


    會不會是系統語言不同造成的差異,請試試以下 代碼

Sub Data()
Dim Arr, Brr, C ...
Andy2483 發表於 2025-10-30 10:53



還是一樣,Part List Nothing

我逐步運行,覺得是下面兩句有點問題,不知道我理解是否有誤。

第一 句:如果Part List H 欄 分佈圖編號最後一個字是小寫字母,就去掉小寫字母來尋找 Layout Dwg 吻合的分佈圖號,Else Q = "||" , 這句變成如果沒有小寫字母 Q = || , 那麽 Z(Q) > 0 變成全部不對了。
第二句: 我們規則應該是尋找Layout Dwg 表�� 沒有出現在Frame per Dwg 的分佈圖號。Z 字典�堶惜ㄛO存在Frame per Dwg 沒有的分佈圖號,而且Layout Dwg �堨�部圖號。

   If T Like "*[a-z]" Then Q = Left(T, Len(T) - 1) Else Q = "||"
   If Z(T) > 0 Or Z(Q) > 0 Then

TOP

回復  198188


    請將 RunForm Module 裡的 Sub Data()代碼全部刪除,程式名稱與 RunData Module Sub ...
Andy2483 發表於 2025-10-30 11:12


試過,不是這個問題。還是 Part List Nothing

TOP

本帖最後由 Andy2483 於 2025-10-30 12:31 編輯

回復 101# 198188

For i = UBound(Brr) To 2 Step -1
   T = Brr(i, 8)
   If T Like "*[a-z]" Then
   '↑1.若T變數尾部是英文小寫
      Q = Left(T, Len(T) - 1)
      '↑就令Q變數是 T變數去掉尾部小寫英文後的字串
      Else
      'Q = "||"
      '↑否則就令Q變數是 "||",
      '如果沒有這行 Q = "||" !!,下一筆會殘留 尾部是英文小寫的數量

   End If
   If Z(T) > 0 Or Z(Q) > 0 Then
      If Z(T) <> 0 And Z(Q) > 0 Then
         MsgBox "Z(Q)有殘留!"
      End If
      N = N + 1
      For j = 1 To 13: Arr(N, j) = Brr(i, j): Next
      Arr(N, 14) = Arr(N, 3) & " x " & (Z(T) + Z(Q))
      Arr(N, 3) = Arr(N, 3) * (Z(T) + Z(Q))
   End If
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2025-10-30 12:57 編輯
附件是運行後的本檔
198188 發表於 2025-10-30 10:12



    此範例後學執行沒問題,
1.請前輩將本檔與DATA BASE檔獨立出來
2.將 RunForm Module刪除再試試看



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

TOP

此範例後學執行沒問題,
1.請前輩將本檔與DATA BASE檔獨立出來
2.將 RunForm Module刪除再試試看 ...
Andy2483 發表於 2025-10-30 12:53



  已經找到原因,是Data Base workbook 不是 Data Base1 workbook, 剛剛核對後。資料正確。

不過之前說漏了一個 規則,就是樓層方面,
本檔 Layout Dwg 方面的規則有誤:
1. 如果有 “-”,以“-”分離前後兩部分樓層,用數字樓層來辨別 現在是只有這個規則
舉例 03F-07F
03F,   04F,  05F,  06F, 07F

2. 當初有說 "&" ,以“&”,直接用前後英文字母來辨別 (這個最早之前有,這次漏了)
舉例 LMI&SMI
LMI,     SMI,     
舉例 PMU&SMI&LMI
PMU,     SMI,       LMI

3. 如果沒有“-” / “&”,則直接以該儲存格的字來分辨樓層 (這個最早之前有,這次漏了)
舉例   PMU
PMU
舉例  05F
05F

樓層
VMU
PMU
LMI&SMI
LMI
05F
03F-41F
03F-07F
02F-08F
09F-12F

TOP

回復 105# 198188

1.前輩提供範例檔名是 Data Base1.xlsx,邏輯上應該用該檔案測試
2.程式裡以下這段代碼已經包含各種樓層代號:
請再詳細測試看看

If T1 Like "##F-*##F" Then
   For i = Val(T1) To Val(StrReverse(Mid(StrReverse(T1), 2, 2)))
      Z(Format(i, "00F")) = ""
   Next
   Else
      Q = Split(T1 & "&" & T1, "&")
      For i = 0 To UBound(Q)
         Z(Q(i)) = 0
      Next
End If
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 198188 於 2025-10-30 16:10 編輯
回復  198188

1.前輩提供範例檔名是 Data Base1.xlsx,邏輯上應該用該檔案測試
2.程式裡以下這段代碼已 ...
Andy2483 發表於 2025-10-30 15:33



1.  因爲 Data Base �堶悸� Part List 内容太多,導致容量過大,爲了方便上載,所以刪除了大部分的資料,另存 Data Base1, 所以導致有信息錯誤。現在已經糾正了。

2. 是 Data Base 檔 �閈rame per Dwg 沒有那些分佈圖號,所以本檔Frame per Dwg 沒資料出來。

3. 剛剛用 測試 2個 生產單,發現有錯誤, WW300 & PW155 這2個分佈圖,在Frame per Dwg 出現過後,應該不能出現在 Part List ,但是事實出現了。請看圖片

Result 30-Oct 2025.rar (131.39 KB)

TOP

本檔 WO No 表資料顯示規則如下:與之前不變
1.        根據本檔 Read 表 A – C 欄資料 (批次次序, 樓層, 生 ...
198188 發表於 2025-10-28 18:01



前輩我敘述的規則是:

本檔Part List 表資料顯示規則如下:
1.本檔的Layout Dwg表 的A欄 分佈圖號(其C欄數量要加總,以下稱:LD合計數量) 要比對 Data Base 裡Part List表的H欄 對應組裝號/加工件號
1.1.若吻合時整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量

1.1.若Data Base 裡Part List表H欄字串尾部多了個小寫英文字母去除後也吻合 本檔的Layout Dwg表 的A欄 分佈圖號 時,也整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量
以上正確
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

前輩我敘述的規則是:

本檔Part List 表資料顯示規則如下:
1.本檔的Layout Dwg表 的A欄 分佈圖號 ...
Andy2483 發表於 2025-10-30 16:13


color=Blue]前輩不好意思,漏了一個點
    本檔Part List 表資料顯示規則如下:
1. 本檔Layout Dwg 表 的A欄 分佈圖號 要沒有在本檔Frame per Dwg 出現過的 分佈圖號
如果本檔Frame per Dwg 已經存在的分佈圖號,不出現


1.1 本檔的Layout Dwg表 的A欄 分佈圖號(其C欄數量要加總,以下稱:LD合計數量) 要比對 Data Base 裡Part List表的H欄 對應組裝號/加工件號
1.2.若吻合時整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量
1.3.若Data Base 裡Part List表H欄字串尾部多了個小寫英文字母去除後也吻合 本檔的Layout Dwg表 的A欄 分佈圖號 時,也整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量

TOP

回復 107# 198188


Frame per Dwg 的分佈圖號 是 Layout Dwg  的分佈圖號帶出來的,怎麼可能後者出現,前者不能出現?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題