返回列表 上一主題 發帖

請問如何連接另一個檔案擷取資料和排序

回復 3# amu1129
在BOOK1跟BOOK2的Sheet1模組內輸入程式碼
改變BOOK1跟BOOK2的Sheet1的b2儲存格試試
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Ar(), Ay(), A As Range
  3. Ky = Array("B01", "B02", "A01", "A02")
  4. If Target.Address <> "$B$2" Then Exit Sub
  5. fs = ThisWorkbook.Path & "\5 B01,B02,A01,A02.xls"
  6. ReDim Preserve Ay(k)
  7. Ay(k) = Array("", "尺寸", "編號", "數量")
  8. k = k + 1
  9. With Workbooks.Open(fs)
  10.    With .Sheets(1)
  11.      For Each A In .Range(.[B4], .[B65536].End(xlUp))
  12.         If A = Target Then
  13.            ReDim Preserve Ar(s)
  14.            Ar(s) = Array(A.Offset(, 4).Value, A.Offset(, 1).Value, A.Offset(, 5).Value)
  15.            cnt = cnt + A.Offset(, 5).Value
  16.            s = s + 1
  17.         End If
  18.     Next
  19.    End With
  20.    .Close 0
  21. End With
  22. For i = 0 To 3
  23.    For j = 0 To UBound(Ar)
  24.       If Ar(j)(0) = Ky(i) Then
  25.          ReDim Preserve Ay(k)
  26.          Ay(k) = Array(k, Ar(j)(0), Ar(j)(1), Ar(j)(2))
  27.          k = k + 1
  28.       End If
  29.    Next
  30. Next
  31. ReDim Preserve Ay(k)
  32. Ay(k) = Array("", "合計", "", cnt)
  33. k = k + 1
  34. With Me
  35.    .[A3:D65536].Clear
  36.    .[A4].Resize(k, 4).Value = Application.Transpose(Application.Transpose(Ay))
  37.    .Range("A2").Resize(k + 2, 4).Borders.LineStyle = 1
  38.    .Range("A2").Resize(k + 2, 4).Borders.Weight = xlThin
  39.    .Range("B2").Resize(k + 2, 3).BorderAround 1, xlThick, xlColorIndexAutomatic
  40. End With
  41. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題