ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

½Ð°Ý³W«h02F - 04F ¦pªG¦bData Base ¿z¿ï¦b³o­Ó½d³ò内ªº¬ÛÃö¸ê®Æ

¦^´_ 130# 198188


    «e½ú¨S¥ý¶ÇDATA OKª©¥»µ¹«á¾Ç½T»{,¨º´N¦A½Ð«e½ú½T»{¥H¤U¤è®×¬O§_²Å¦X»Ý¨D

Sub Data()
Dim Arr, Brr, Crr, Z, Q, S, i&, j%, N&, T$, T1$, MyPath$, xFile$, xBook As Workbook, Re, R&
Application.ScreenUpdating = False
For Each S In [{"Layout Dwg","Frame per Dwg","Part List"}]
   Sheets(S).UsedRange.Rows.Offset(1).EntireRow.Delete
Next
MyPath = ThisWorkbook.Path & "\"
xFile = "Data Base.xlsx"
On Error Resume Next
Set xBook = Workbooks(xFile)
If xBook Is Nothing Then
   Set xBook = Workbooks.Open(MyPath & xFile, , True, , "")
   Re = True: ThisWorkbook.Activate
End If
On Error GoTo 0
Set Z = CreateObject("Scripting.Dictionary")
T = Sheets("Read").[A2] & "|" & Sheets("Read").[C2]
T1 = Sheets("Read").[B2]
With xBook.Sheets("WO No")
   For i = 2 To .[A65536].End(3).Row
      If .Cells(i, "B") & "|" & .Cells(i, "D") = T Then
         .Rows(i).Copy Sheets("WO No").Rows(2)
         For j = 6 To 11
            Z("|" & .Cells(i, j)) = ""
         Next
         Sheets("Read").[A2].Resize(, 3).Copy Sheets("WO No").[B2]
         GoTo 11
      End If
   Next
   MsgBox "Nothing": Exit Sub
End With
11
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
Brr = xBook.Sheets("Layout Dwg").UsedRange
For i = 2 To UBound(Brr)
   If Z.Exists(Brr(i, 2)) And Brr(i, 4) = Sheets("Read").[A2] Then
      Z(Brr(i, 1)) = Z(Brr(i, 1)) + Val(Brr(i, 3))
      N = N + 1
      For j = 1 To 4: Brr(N, j) = Brr(i, j): Next
   End If
Next
If N > 0 Then Sheets("Layout Dwg").[A2].Resize(N, 4) = Brr: N = 0 Else MsgBox "Nothing under the floor": GoTo 12
Set Brr = xBook.Sheets("Frame per Dwg").UsedRange
Brr = Range(Brr, Brr.Offset(, 1))
For i = 2 To UBound(Brr)
   If Z(Brr(i, 1)) > 0 Then
      N = N + 1
      For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
      Brr(N, 7) = Brr(N, 5) & " x " & Z(Brr(i, 1))
      Brr(N, 5) = Brr(N, 5) * Z(Brr(i, 1))
      Z(Brr(i, 2) & "/") = Z(Brr(i, 2) & "/") + Brr(N, 5)
   End If
Next
If N > 0 Then Sheets("Frame per Dwg").[A2].Resize(N, 7) = Brr: N = 0 Else MsgBox "Frame per Dwg_Nothing"
Brr = xBook.Sheets("Part List").UsedRange
ReDim Arr(1 To 100000, 1 To 14): Crr = Arr
For i = 2 To UBound(Brr)
   T = Brr(i, 8)
   If T Like "*[a-z]" Then Q = Left(T, Len(T) - 1) Else Q = "||"
   If Z(Q) > 0 Then
      N = N + 1
      For j = 1 To 13: Arr(N, j) = Brr(i, j): Next
      Arr(N, 14) = Arr(N, 3) & " x " & Z(Q)
      Arr(N, 3) = Arr(N, 3) * Z(Q)
   End If
   If Z(T & "/") > 0 And Z.Exists("|" & Left(T, 2)) Then
      R = R + 1
      For j = 1 To 13: Crr(R, j) = Brr(i, j): Next
      Crr(R, 14) = Crr(R, 3) & " x " & Z(T & "/")
      Crr(R, 3) = Crr(R, 3) * Z(T & "/")
   End If
Next
If N > 0 Then
   With Sheets("Part List").[A2].Resize(N, 14)
      .Value = Arr
      .Interior.ColorIndex = 35
   End With
End If
If R > 0 Then
   With Sheets("Part List").Cells(N + 2, 1).Resize(R, 14)
      .Value = Crr
      .Interior.ColorIndex = 36
   End With
End If
If N + R = 0 Then MsgBox "Part List_Nothing"
12: If Re = True Then xBook.Close 0
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_  198188


    ®¥³ß«e½ú
Form ªº³¡¤À¤w¸g³B²z¦n¤F¡A¦ý¥~¥X¤¤ ¬P´Á¤@¤~¯à´£¨Ñ´ú¸Õ
½Ð«e½ú±NData  ...
Andy2483 µoªí©ó 2025-10-31 12:45



«e½ú¥i§_¤W¸üForm µ¹§Ú´ú¸Õ

TOP

¦^´_  198188


    ®¥³ß«e½ú
Form ªº³¡¤À¤w¸g³B²z¦n¤F¡A¦ý¥~¥X¤¤ ¬P´Á¤@¤~¯à´£¨Ñ´ú¸Õ
½Ð«e½ú±NData  ...
Andy2483 µoªí©ó 2025-10-31 12:45



    ¦nªº¡AÁÂÁ«e½ú

TOP

¦^´_ 127# 198188


    ®¥³ß«e½ú
Form ªº³¡¤À¤w¸g³B²z¦n¤F¡A¦ý¥~¥X¤¤ ¬P´Á¤@¤~¯à´£¨Ñ´ú¸Õ
½Ð«e½ú±NData ªº³¡¤À¦h´ú¸Õ¦UºØ±¡¹Ò¡A¦pªG³£ok¡A½Ð¤W¶Ç¤@¥÷½d¨Òµ¹«á¾Ç´ú¸Õ
«á¾Ç´ú¸Õ§¹¨â­Ó³£¥i¥H°õ¦æ ¦A´£¨ÑForm
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_  198188


    ©Ò¥HData³¡¥÷«e½ú¤w¸g·d©w¤F¶Ü¡H
Andy2483 µoªí©ó 2025-10-31 11:32



    «e½ú¡A¬Oªº¡C²{¦bForm ³¡¤À¥d¦í¤F¡A½Ð¬Ý #125

TOP

¦^´_ 124# 198188


    ©Ò¥HData³¡¥÷«e½ú¤w¸g·d©w¤F¶Ü¡H
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_  198188


    ¥H¤U¤è®×½Ð¸Õ¸Õ¬Ý:

Option Explicit
Dim A, Z, R&, W, L, i&, Brr, Mrr, Q, Dr ...
Andy2483 µoªí©ó 2025-10-27 15:31



«e½ú¡Aªö¥Î³o­Ó¤è®×¡A¦b°õ¦æ¨îªí®É¡A¥X²{¤W¹Ïªº¿ù»~¡AµLªk½Æ»sªí®æ¡Aªþ¤W½d¥»¡A½ÐÀ°¬Ý¬Ý

TOP

²{¦b¦b¤á¥~¨S¿ìªkÀ°´ú¸Õ
°»¿ù°±¤Uªº¬OÀˬd  ListÀÉGÄæ¬OY©ÎOªºÂk¨ì¤u¦a¥Î¡G
½Ð¬d¬Ýi °õ¦æ¨ì²Ä´X ...
Andy2483 µoªí©ó 2025-10-31 09:09
  1. Sub Data()
  2. Dim Arr, Brr, Crr, Z, Q, S, i&, j%, N&, T$, T1$, MyPath$, xFile$, xBook As Workbook, Re, R&
  3. Dim rng, cell As Range

  4. Application.ScreenUpdating = False
  5. For Each S In [{"Layout Dwg","Frame per Dwg","Part List"}]
  6.    Sheets(S).UsedRange.Rows.Offset(1).EntireRow.Delete
  7.    'Delete Old data of "Layout Dwg","Frame per Dwg","Part List" from this workbook
  8. Next
  9. MyPath = ThisWorkbook.Path & "\"
  10. xFile = "Data Base.xlsx"
  11. On Error Resume Next
  12. Set xBook = Workbooks(xFile)
  13. If xBook Is Nothing Then
  14.    Set xBook = Workbooks.Open(MyPath & xFile, , True, , "")
  15.    Re = True: ThisWorkbook.Activate
  16. End If
  17. On Error GoTo 0
  18. Set Z = CreateObject("Scripting.Dictionary")
  19. T = Sheets("Read").[A2] & "|" & Sheets("Read").[C2]
  20. T1 = Sheets("Read").[B2]
  21. With xBook.Sheets("WO No")
  22.    For i = 2 To .[A65536].End(3).Row
  23.       If .Cells(i, "B") & "|" & .Cells(i, "D") = T Then
  24.          .Rows(i).Copy Sheets("WO No").Rows(2)
  25.          For j = 6 To 11
  26.             Z("|" & .Cells(i, j)) = ""
  27.             'Let Column F-K of WO No Sheet as KEY item and add "|" between each word then put into dictionary
  28.          Next
  29.          Sheets("Read").[A2].Resize(, 3).Copy Sheets("WO No").[B2]
  30.          GoTo 11
  31.       End If
  32.    Next
  33.    MsgBox "Nothing": Exit Sub
  34. End With
  35. 11
  36. If T1 Like "##F-*##F" Then
  37.    For i = Val(T1) To Val(StrReverse(Mid(StrReverse(T1), 2, 2)))
  38.       Z(Format(i, "00F")) = ""
  39.    Next
  40.    Else
  41.       Q = Split(T1 & "&" & T1, "&")
  42.       For i = 0 To UBound(Q)
  43.          Z(Q(i)) = 0
  44.       Next
  45. End If
  46. Brr = xBook.Sheets("Layout Dwg").UsedRange
  47. For i = 2 To UBound(Brr)
  48.    If Z.Exists(Brr(i, 2)) And Brr(i, 4) = Sheets("Read").[A2] Then
  49.       'If match of column B floor and column D batch
  50.       Z(Brr(i, 1)) = Z(Brr(i, 1)) + Val(Brr(i, 3))
  51.       'Sum of column C QTY of same of column A "Distribution Map No." of "Layout Dwg" (Name as:LDTotalQTY)
  52.       N = N + 1
  53.       For j = 1 To 4: Brr(N, j) = Brr(i, j): Next
  54.    End If
  55. Next
  56. If N > 0 Then Sheets("Layout Dwg").[A2].Resize(N, 4) = Brr: N = 0 Else MsgBox "Nothing under the floor": GoTo 12
  57. Brr = xBook.Sheets("Frame per Dwg").UsedRange
  58. For i = 2 To UBound(Brr)
  59.    If Z(Brr(i, 1)) > 0 Then
  60.       N = N + 1
  61.       For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
  62.       Brr(N, 5) = Brr(N, 5) * Z(Brr(i, 1))
  63.       'Let Column E QTY of "Frame per Dwg" * LDTotalQTY
  64.       If Z(Brr(i, 2)) > 0 Then
  65.          MsgBox "*Layout Dwg* A column and *Frame per Dwg* B column are duplicate" & vbLf & vbLf & Brr(i, 2)
  66.          Exit Sub
  67.       End If
  68.       Z(Brr(i, 2) & "/") = Z(Brr(i, 2) & "/") + Brr(N, 5)
  69.       'Sum of Column E QTY of "Frame per Dwg" Column B "Assembly Drawing No." (Name as: FDTotalQTY)
  70.    End If
  71. Next
  72. If N > 0 Then Sheets("Frame per Dwg").[A2].Resize(N, 6) = Brr: N = 0 Else MsgBox "Frame per Dwg_Nothing"

  73. Brr = xBook.Sheets("Part List").UsedRange
  74. ReDim Arr(1 To 100000, 1 To 13): Crr = Arr
  75. For i = 2 To UBound(Brr)
  76.    T = Brr(i, 8)
  77.    If T Like "*[a-z]" Then Q = Left(T, Len(T) - 1) Else Q = "||"
  78.    If Z(T) > 0 Or Z(Q) > 0 Then
  79.    Set rng = Sheets("Frame per Dwg").Columns("A:A")
  80.    Set cell = rng.Find(What:=T, LookIn:=xlFormulas, _
  81.                     LookAt:=xlWhole, MatchCase:=False)
  82.    If cell Is Nothing Then
  83.       N = N + 1
  84.       For j = 1 To 13: Arr(N, j) = Brr(i, j): Next
  85.       Arr(N, 3) = Arr(N, 3) * (Z(T) + Z(Q))
  86.    End If

  87.    End If
  88.    '1.Filter Layout Dwg column A "Distribution Map No." of this workbook which don't appear on the Frame per Dwg of this workbook
  89.    '1.1 Match of Layout Dwg column A "Distribution Map No." of this workbook and Part List column H "Distribution Map No." of Data Base workbook
  90.    '1.2 If (1.) Match, list out the row on Part List of this workbook and column C QTY * LDTotalQTY
  91.    '1.3 If the last word column H is lowercase letter of "Part List" of Data Base workbook, then remove the lowercase letter and match column A of "Layout Dwg" of this workbook, then list out the row on Part List of this workbook and column C QTY * LDTotalQTY
  92.    If Z(T & "/") > 0 And Z.Exists("|" & Left(T, 2)) Then
  93.       R = R + 1
  94.       For j = 1 To 13: Crr(R, j) = Brr(i, j): Next
  95.       Crr(R, 3) = Crr(R, 3) * Z(T & "/")
  96.       '2. Column B "Assembly Drawing No." of "Frame per Dwg" of this workbook including column F-K of WO No, then match column H "Distribution Map No." of "Part List" of Data Base workbook
  97.       '2.1 If (2.1) match, list out the row on Part List of this workbook and column C QTY * FDTotalQTY
  98.    End If
  99. Next
  100. If N > 0 Then
  101.    With Sheets("Part List").[A2].Resize(N, 13)
  102.       .Value = Arr
  103.       .Interior.ColorIndex = 35
  104.       'Let Green which item list out by "Distribution Map No."
  105.    End With
  106. End If
  107. If R > 0 Then
  108.    With Sheets("Part List").Cells(N + 2, 1).Resize(R, 13)
  109.       .Value = Crr
  110.       .Interior.ColorIndex = 36
  111.       'Let Yellow which item list out by "Assembly Drawing No."
  112.    End With
  113. End If
  114. If N + R = 0 Then MsgBox "Part List_Nothing"
  115. 12: If Re = True Then xBook.Close 0
  116. End Sub
½Æ»s¥N½X
«e½ú¡A§Ú¼W¥[¤F¤@­Ó set find ¥\¯à¦b³oùØ¡A¹LÂo±¼¥X²{¦bFrame per Dwg ªº¤À§G¹Ï¸¹¡C
Brr = xBook.Sheets("Part List").UsedRange
ReDim Arr(1 To 100000, 1 To 13): Crr = Arr
For i = 2 To UBound(Brr)
   T = Brr(i, 8)
   If T Like "*[a-z]" Then Q = Left(T, Len(T) - 1) Else Q = "||"
   If Z(T) > 0 Or Z(Q) > 0 Then
   Set rng = Sheets("Frame per Dwg").Columns("A:A")
   Set cell = rng.Find(What:=T, LookIn:=xlFormulas, _
                    LookAt:=xlWhole, MatchCase:=False)
   If cell Is Nothing Then
      N = N + 1
      For j = 1 To 13: Arr(N, j) = Brr(i, j): Next
      Arr(N, 3) = Arr(N, 3) * (Z(T) + Z(Q))
   End If
   End If

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2025-10-31 09:12 ½s¿è
«e½ú¡A´«¤F¤§«á¡A°õ¦æ¥X²{³o­Ó°ÝÃD¡C
198188 µoªí©ó 2025-10-31 07:43



    ²{¦b¦b¤á¥~¨S¿ìªkÀ°´ú¸Õ
°»¿ù°±¤Uªº¬OÀˬd  ListÀÉGÄæ¬OY©ÎOªºÂk¨ì¤u¦a¥Î¡G
½Ð¬d¬Ýi °õ¦æ¨ì²Ä´X¦C ¨Ã¬d¬Ý¸Ó¦CªºGÄæÀx¦s®æ¬O¤°»ò¦r


ÁÙ¦³³o  "Data Base1.xlsx"¬O¥¿½Tªº¶Ü¡H
ÁÙ¬O­n§ï¦¨ "Data Base.xlsx"
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_  198188


    ·|¤£·|¬O¨t²Î»y¨¥¤£¦P³y¦¨ªº®t²§,½Ð¸Õ¸Õ¥H¤U ¥N½X

Sub Data()
Dim Arr, Brr, C ...
Andy2483 µoªí©ó 2025-10-30 10:53


«e½ú¡A¥i§_ª½±µ¦b³o­Óµ{¦¡¥[¤@­Ó±ø¥ó¡A¿z¬d ±N¨S¦³¦b¥»ÀÉFrame per Dwg ¥X²{ ªº Layout Dwg ¤À§G¹Ï¸¹¡A¸ò Data Base Part List ¤À§G¹Ï¸¹ ¹ï¤ñ¡C
¨ä¥L¤è­±³o­Óµ{¦¡¨S¦³°ÝÃD¤F¡C

TOP

        ÀR«ä¦Û¦b : ¤H¨ÆªºÁ}Ãø»PµZ¿i¡A´N¬O¤@ºØ¦ÒÅç¡C
ªð¦^¦Cªí ¤W¤@¥DÃD