ACE giúp đỡ - Click Button Tạo list cho sheet 2 những data lưu trữ trong sheet 1 (1 người xem)

Người dùng đang xem chủ đề này

tieuliphidao76

Thành viên mới
Tham gia
20/3/15
Bài viết
6
Được thích
1
Xin ACE giúp đỡ, mình hiện tại có 2 Sheets ( InvoiceData, PickingList )

InvoiceData : chứa những Array thông tin bán hàng ( eg. Ngày / Tên khách hàng / Array tên món hàng / Array Số Lượng / Array Đơn vị ....)
PickingList : Đọc dữ liệu trong InvoiceData và ghi lại những thông tin dưới dạng liệt kê cho từng khách hàng như minh hoạ trong file đính kèm.

Mình muốn tạo một button có thể làm nhiệm vụ để tạo pickinglist thay vì mình phải copy và paste từ từng cái Invoice mà làm PickingList như hiện nay.

Chân thành cám ơn ACE
 

File đính kèm

Vẫn chưa có bậc thầy nào giúp mình giải quyết vấn đề nan giải này hỡ ;;;;;;;;;;;;;;;;;;;;;;
 
Upvote 0
Vẫn chưa có bậc thầy nào giúp mình giải quyết vấn đề nan giải này hỡ ;;;;;;;;;;;;;;;;;;;;;;

không phải là thầy nên chỉ làm thử
Mã:
Sub tach()
Dim I_Arr, N_Arr, Q_Arr, U_Arr As Variant, P_Arr(), i, j As Long

With Sheet1
    I_Arr = .[E8].Resize(.[E8].End(xlDown).Row - 7, 4).Value
End With
ReDim P_Arr(1 To 100, 1 To 100)
For i = 1 To UBound(I_Arr)
    N_Arr = Split(I_Arr(i, 2), ",")
    Q_Arr = Split(I_Arr(i, 3), ",")
    U_Arr = Split(I_Arr(i, 4), ",")
    P_Arr(1, 1 + (i - 1) * 4) = I_Arr(i, 1)
        For j = 1 To UBound(N_Arr)
            P_Arr(j + 1, 1 + (i - 1) * 4) = N_Arr(j)
            P_Arr(j + 1, 2 + (i - 1) * 4) = Q_Arr(j)
            P_Arr(j + 1, 3 + (i - 1) * 4) = U_Arr(j)
        Next
Erase N_Arr, Q_Arr, U_Arr
Next
With Sheet12
.[b9].Resize(1000, 50).ClearContents
.[b9].Resize(UBound(I_Arr), UBound(I_Arr) * 3).Value = P_Arr
End With
End Sub
 
Upvote 0
không phải là thầy nên chỉ làm thử
Mã:
Sub tach()
Dim I_Arr, N_Arr, Q_Arr, U_Arr As Variant, P_Arr(), i, j As Long

With Sheet1
    I_Arr = .[E8].Resize(.[E8].End(xlDown).Row - 7, 4).Value
End With
ReDim P_Arr(1 To 100, 1 To 100)
For i = 1 To UBound(I_Arr)
    N_Arr = Split(I_Arr(i, 2), ",")
    Q_Arr = Split(I_Arr(i, 3), ",")
    U_Arr = Split(I_Arr(i, 4), ",")
    P_Arr(1, 1 + (i - 1) * 4) = I_Arr(i, 1)
        For j = 1 To UBound(N_Arr)
            P_Arr(j + 1, 1 + (i - 1) * 4) = N_Arr(j)
            P_Arr(j + 1, 2 + (i - 1) * 4) = Q_Arr(j)
            P_Arr(j + 1, 3 + (i - 1) * 4) = U_Arr(j)
        Next
Erase N_Arr, Q_Arr, U_Arr
Next
With Sheet12
.[b9].Resize(1000, 50).ClearContents
.[b9].Resize(UBound(I_Arr), UBound(I_Arr) * 3).Value = P_Arr
End With
End Sub

Thank bác gâu gâu nghen tuyệt vời ông mặt trời
 
Upvote 0
bạn sửa cái này một chút, do không xác định được kích thướt mảng kết quả, nên cho luôn 100 dòng 100 cột

Mã:
With Sheet12
.[b9].Resize(100, 100).ClearContents
.[b9].Resize(100, 100).Value = P_Arr
End With

Gâu Gâu ơi, bạn cho mình hỏi : sao lúc paste qua pickinglist, mỗi nhà hàng đều bị mất 1 item đầu tiên vậy.
Thank bạn nhiều
 
Upvote 0
Gâu Gâu ơi, bạn cho mình hỏi : sao lúc paste qua pickinglist, mỗi nhà hàng đều bị mất 1 item đầu tiên vậy.
Thank bạn nhiều

mảng mà nó tách ra bắt đầu bằng zero chứ ko phải 1........hichic
Mã:
Sub tach()
Dim I_Arr, N_Arr, Q_Arr, U_Arr As Variant, P_Arr(), i, j As Long

With Sheet1
    I_Arr = .[E8].Resize(.[E8].End(xlDown).Row - 7, 4).Value
End With
ReDim P_Arr(1 To 100, 1 To 100)
For i = 1 To UBound(I_Arr)
    N_Arr = Split(I_Arr(i, 2), ",")
    Q_Arr = Split(I_Arr(i, 3), ",")
    U_Arr = Split(I_Arr(i, 4), ",")
    P_Arr(1, 1 + (i - 1) * 4) = I_Arr(i, 1)
        For j = 0 To UBound(N_Arr)
            P_Arr(j + 2, 1 + (i - 1) * 4) = N_Arr(j)
            P_Arr(j + 2, 2 + (i - 1) * 4) = Q_Arr(j)
            P_Arr(j + 2, 3 + (i - 1) * 4) = U_Arr(j)
        Next
Erase N_Arr, Q_Arr, U_Arr
Next
With Sheet12
.[b9].Resize(100, 100).ClearContents
.[b9].Resize(100, 100).Value = P_Arr
End With
End Sub
 
Upvote 0

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

Back
Top Bottom