Tách dữ liệu từ nhiều đơn hàng thành các đơn hàng chi tiết

  • Thread starter Thread starter bactu
  • Ngày gửi Ngày gửi
Liên hệ QC

bactu

Thành viên thường trực
Tham gia
19/10/07
Bài viết
304
Được thích
277
Donate (Momo)
Donate
Em có một dữ liệu, khi xuất kho để sản xuất cho nhiều đơn hàng thì gộp chung tất cả các đơn hàng cần xuất cho 1 dòng dữ liệu tương ứng. Giờ em muốn tách thành các đơn hàng chi tiết tương ứng từng dòng như file đính kèm.
Trân trọng cảm ơn nhiều!!!
 

File đính kèm

Em có một dữ liệu, khi xuất kho để sản xuất cho nhiều đơn hàng thì gộp chung tất cả các đơn hàng cần xuất cho 1 dòng dữ liệu tương ứng. Giờ em muốn tách thành các đơn hàng chi tiết tương ứng từng dòng như file đính kèm.
Trân trọng cảm ơn nhiều!!!
Dùng tạm thử code này xem sao.
Mã:
Public Sub Order_Split()
Dim Arr(1 To 10000, 1 To 4), dArr, i As Integer, j As Integer, sArr
dArr = Sheet1.Range("A5:D" & Sheet1.Range("A65000").End(xlUp).Row).Value
For i = 1 To UBound(dArr)
    sArr = Split(dArr(i, 3), ";")
    For j = 0 To UBound(sArr)
        k = k + 1
        Arr(k, 1) = dArr(i, 1): Arr(k, 2) = dArr(i, 2)
        Arr(k, 3) = sArr(j): Arr(k, 4) = dArr(i, 4)
    Next j
Next i
Sheet1.Range("G5:J1000").ClearContents
If k Then Sheet1.Range("G5:J5").Resize(k) = Arr
End Sub
 
Upvote 0
Em có một dữ liệu, khi xuất kho để sản xuất cho nhiều đơn hàng thì gộp chung tất cả các đơn hàng cần xuất cho 1 dòng dữ liệu tương ứng. Giờ em muốn tách thành các đơn hàng chi tiết tương ứng từng dòng như file đính kèm.
Trân trọng cảm ơn nhiều!!!
Đây bạn xem.
Mã:
Sub tachdonhang()
   Dim arr, arr1
   Dim a As Long, b As Long, i As Long, j As Long, lr As Long, c As Long
   Dim T
   With Sheet1
      lr = .Range("B" & Rows.Count).End(xlUp).Row
      If lr < 5 Then MsgBox "khong co du lieu": Exit Sub
      arr = .Range("A5:D" & lr).Value
      ReDim arr1(1 To 10000, 1 To 4)
      For i = 1 To UBound(arr, 1)
          T = Split(";" & arr(i, 3), ";")
          b = UBound(T)
          For j = 1 To b
              a = a + 1
              arr1(a, 1) = arr(i, 1)
              arr1(a, 2) = arr(i, 2)
              arr1(a, 3) = T(j)
              arr1(a, 4) = arr(i, 4)
          Next j
     Next i
     c = .Range("G" & Rows.Count).End(xlUp).Row
     If c > 4 Then .Range("G5:j" & c).ClearContents
     .Range("G5").Resize(a, 4).Value = arr1
End With
End Sub
 

File đính kèm

Upvote 0
Quá tuyệt vời, em cảm ơn nhiều!!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom