Phân bổ số lượng kế hoạch ngày (1 người xem)

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

destinythanhphuong

Thành viên hoạt động
Tham gia
15/10/11
Bài viết
125
Được thích
2
chào các anh chị
em muốn áp dụng VBA khi phân bổ số lượng kế hoạch ngày theo file đính kèm. Lúc ban đầu tổng số kế hoạch ngày = kế hoạch theo wip, sau khi chạy VBA thì số lượng kế hoạch theo ngày = số kế hoạch đã trừ tỷ lệ phế.
cám ơn các anh chị nhiều lắm

https://www.dropbox.com/s/qcb4b0y3255r05k/Phan bo ke hoach ngay.xlsx
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn nên đưa file trực tiếp lên diễn đàn này; dù là giả lập

Vì mình không thể xem file theo đường dẫn kia được; Hay bạn chờ đi nha, người khác sẽ xem cho bạn.

Bye!
 
Bạn nên đưa file trực tiếp lên diễn đàn này; dù là giả lập

Vì mình không thể xem file theo đường dẫn kia được; Hay bạn chờ đi nha, người khác sẽ xem cho bạn.

Bye!

bạn có thể download file về máy tính, ko nhất thiết phải xem trực tiếp. thanks bạn quan tâm
 
bạn có thể download file về máy tính, ko nhất thiết phải xem trực tiếp. thanks bạn quan tâm
Mã:
Sub Button1_Click()
Dim arrkh, arrkq
Dim i As Long, j As Long, tong1 As Long, tong2 As Long
arrkh = Sheet1.Range("B4:I6")
Sheet1.Range("B10:I12").ClearContents
arrkq = Sheet1.Range("B10:I12")
For i = 1 To 3 'vi cac mang nay da biet kich thuoc nen cho chay toi 3 luon
    tong1 = 0
    tong2 = 0
    For j = 1 To 8
        If j <= 2 Then
            arrkq(i, j) = arrkh(i, j)
        Else
            tong1 = tong2
            tong2 = tong2 + arrkh(i, j)
            If tong2 <= arrkh(i, 1) Then
                arrkq(i, j) = arrkh(i, j)
            Else
                arrkq(i, j) = arrkh(i, 1) - tong1
                Exit For
            End If
        End If
    Next
Next
Sheet1.Range("B10:I12").Value = arrkq
End Sub
bạn tạo một button trên sheet1 rồi cho code trên vào sự kiện click của button nhé!chúc công việc vui vẻ! "XIN LOI VI LAM CHUYEN NHƯNG BAN LÀ NGƯỜI MIEN BÁC HAY TRUNG HAY NAM VAY?"
 
hi bạn maytinhvp1 mình muốn kết quả ứng dụng tại vùng B4:I6 luôn , không cần hiển thị B10 và I 12 được không bạn.
 
Lần chỉnh sửa cuối:
hi
cách làm của bạn đúng ý mình rồi chỉ khác là sau khi chạy VBA thì kết quả thể hiện ở vùng dữ liệu luôn.
kế hoạch phân bổ theo ngày sẽ bằng số kế hoạch theo cột mục tiêu MPS.

cám ơn bạn nhiều lắm

https://www.dropbox.com/s/58afmybc9u0n1fl/KE HOACH SAN XUAT THANG 3 - TUAN 3.xlsm
Mã:
Sub Button1_Click()
Dim arrkh, arrkq
Dim i As Long, j As Long, tong1 As Long, tong2 As Long
arrkh = Sheet1.Range("B4:I6")
Sheet1.Range("B4:I6").ClearContents
arrkq = Sheet1.Range("B4:I6")
For i = 1 To 3 'vi cac mang nay da biet kich thuoc nen cho chay toi 3 luon
    tong1 = 0
    tong2 = 0
    For j = 1 To 8
        If j <= 2 Then
            arrkq(i, j) = arrkh(i, j)
        Else
            tong1 = tong2
            tong2 = tong2 + arrkh(i, j)
            If tong2 <= arrkh(i, 1) Then
                arrkq(i, j) = arrkh(i, j)
            Else
                arrkq(i, j) = arrkh(i, 1) - tong1
                Exit For
            End If
        End If
    Next
Next
Sheet1.Range("B4:I6").Value = arrkq
End Sub
Phai chang sau khi lap KHSX xong ban bam nut chay VBA la nh­u code tren ( hien thi luon ket qua tai noi lap KHSX)
 
Bạn ơi
file mình gửi lại có cột phụ chính giữa của cột tổng cộng và vùng array.
Khi mình chạy VBA thì cột giá trị chính giữa chạy theo luôn. có cách nào khi chạy thì cột giá trị ko bị chạy theo
cám ơn bạn nhiều lắm
 
Bạn ơi
file mình gửi lại có cột phụ chính giữa của cột tổng cộng và vùng array.
Khi mình chạy VBA thì cột giá trị chính giữa chạy theo luôn. có cách nào khi chạy thì cột giá trị ko bị chạy theo
cám ơn bạn nhiều lắm
Mình tin rằng bạn cũng là người rất thạo về excel giờ muốn qua lập trình để cải thiện cái gọi là thủ công kía. Thế này nhé trường hợp đó bạn cứ gán mảng bình thường và cái cột phụ đó là cột thứ bao nhiêu trong mảng ấy thì bạn cho thêm điều kiện như code sau.Tất nhiên đây chỉ là code giả lập cho cái bạn muốn tìm hiểu vậy nên phải pha măm pha muối nữa rồi dùng nhé
Mã:
Sub Button1_Click()
Dim arrkh, arrkq
Dim i As Long, j As Long, tong1 As Long, tong2 As Long
arrkh = Sheet1.Range("B4:I6")
Sheet1.Range("B4:I6").ClearContents
arrkq = Sheet1.Range("B4:I6")
For i = 1 To 3 'vi cac mang nay da biet kich thuoc nen cho chay toi 3 luon
    tong1 = 0
    tong2 = 0
    For j = 1 To 8
        If j <= 2 Then
            arrkq(i, j) = arrkh(i, j)
        Else
            tong1 = tong2
            tong2 = tong2 + arrkh(i, j)
            If tong2 <= arrkh(i, 1) Then
                arrkq(i, j) = arrkh(i, j)
            [COLOR=#ff0000]Elseif j <> thutucotphu then[/COLOR] ' TUY BIEN CHO NAY NHE BAN DE BO QUA COT PHU
                arrkq(i, j) = arrkh(i, 1) - tong1
                Exit For
            End If
        End If
    Next
Next
Sheet1.Range("B4:I6").Value = arrkq
End Sub
 
Bạn ơi một vài chỗ không ổn lắm
mình muốn mỗi hàng của cột B vd B4 = F4 : K4
nếu mảng lớn hơn hoặc nhỏ hơn số kế hoach đã trừ tỷ lệ phế phẩm thì sẽ được trừ đi hoặc cộng thêm vào ô cuối . VD như hình bên dưới bạn xem nhé.
Sẵn tiên mình muốn tự học thêm về VBA thì phải làm sao
Capture.jpg
 
-Cái không ổn của bạn là code chưa thảo mãn cái bạn đã yêu cầu hay không ổn với cái bạn mong muốn thêm?
-Cái bạn mong muốn thêm là xử lý được cho tất cả các ô phía sau chứ không phải là ô cuối. Ví dụ mã hàng C theo ảnh của bạn là xử lý các ô phía sau cụ thể là cột H và cột I. Nếu theo yêu cầu ban đầu của bạn thì sau khi chạy code thì cột H là 75 và I là 0.Còn như trên khi chạy code xong cột H là 50 cột i là 25 >>> đây là cái bạn mong muốn thêm.
-Cái này cũng làm được cho bạn nhưng mình đoán rằng sau khi làm cho bạn,lúc nào đó bạn bạn sẽ lại nói rằng:
1: Giả xử tại dòng 4 cái bạn đang cần là 50,20,20. Nhưng bạn đang muốn tự động hóa KHSX nên bạn đặt duy nhất KHSX cho cột F là 50 ( Như khsx dòng 6 bạn đang nói tới ấy bạn đặt 1 khsx và muốn tự động dàn KHSX cho ngày sau) và sau đó tự code VBA xử lý cho bạn các cột sau >> kết quả là 40 cho cột G>>>không theo mong muốn của bạn!!!
2: Đến một lúc nào đó bạn sẽ thấy không hợp lý tiếp là: Ví dụ dòng 6, bạn lai bảo tôi không muốn có KHSX vào cột H và cột I mà là phải xử lý cho tôi là côt I và J nhận KHSX là 50 và 25( vì lý do sản xuất có thể cách ngày)
>>> Bạn phải có được đầy đủ cái bạn mong muốn, tại sao là 50,20,20 sao không là 50,40 như 50,25 và 50,50,25.... có ngày nào KHSX không không liền nhau không...?
Tiếp tục đi bạn nhé!!!!
BẠN MUỐN HỌC VBA THÌ HÀNH TRANG BAN ĐẦU CỦA BẠN LÀ PHẢI YÊU NÓ THỰC SỰ ĐÃ.
 
bạn ơi
" Nếu theo yêu cầu ban đầu của bạn thì sau khi chạy code thì cột H là 75 và I là 0 "
theo yêu cầu này cũng được , nhưng cột I = blank được không bạn,

ý của mình là muốn phân bổ số lượng kế hoạch các ngày trong tuần sao cho bằng với kế hoạch đã trừ tỷ lệ phế phẩm theo từng mã hàng.
vì ban đầu kế hoạch sắp theo số lượng có trên wip,

với lại giả sử có thêm 2 hoặc 3 cột phụ chính giữa trở lên thì có thể làm = VBA
mình cũng muốn học thêm VBA ( để hỗ trợ cho công việc ) nhưng ko biết học ở đâu ?
cám ơn bạn

 
bạn ơi
" Nếu theo yêu cầu ban đầu của bạn thì sau khi chạy code thì cột H là 75 và I là 0 "
theo yêu cầu này cũng được , nhưng cột I = blank được không bạn,

Đương nhiên cột I là blank rồi còn gì!
với lại giả sử có thêm 2 hoặc 3 cột phụ chính giữa trở lên thì có thể làm = VBA
mình cũng muốn học thêm VBA ( để hỗ trợ cho công việc ) nhưng ko biết học ở đâu ?
cám ơn bạn
Trong bảng có nhưng cột phụ nào thì bạn thêm điều kiện bỏ qua cột đó đi mình hướng dẫn trước đó rồi còn gì
Có lớp học VBA đang chuẩn bị mở tại HÀ Nội đó.Vào địa chỉ bên dưới tham khảo lớp hoc bạn nhé!
https://www.facebook.com/groups/598088926920174/

 
bạn ơi chỗ thứ tự cột phụ mình muốn bỏ qua cột D và E viết code làm sao ? lúc mình chạy VBA thì vẫn bị = 0
mình làm ko được
thanks bạn
 
Lần chỉnh sửa cuối:
bạn ơi chỗ thứ tự cột phụ mình muốn bỏ qua cột D và E viết code làm sao ? lúc mình chạy VBA thì vẫn bị = 0
mình làm ko được
thanks bạn
Mã:
Sub Button1_Click()
Dim arrkh, arrkq
Dim i As Long, j As Long, tong1 As Long, tong2 As Long
arrkh = Sheet1.Range("A4:K6")
Sheet1.Range("A4:K6").ClearContents
arrkq = Sheet1.Range("A4:K6")
For i = 1 To 3 'vi cac mang nay da biet kich thuoc nen cho chay toi 3 luon
    tong1 = 0
    tong2 = 0
    For j = 1 To 8
        If j <= 2 Then
            arrkq(i, j) = arrkh(i, j)
        Else
            tong1 = tong2
            tong2 = tong2 + arrkh(i, j)
            If tong2 <= arrkh(i, 1) and [COLOR=#ff0000]arrkh(i, j)>0[/COLOR] Then 'cho nay bo qua gia tri = 0
                arrkq(i, j) = arrkh(i, j)
            [COLOR=#ff0000]Elseif j <> 4 and j <>5 then[/COLOR] ' cho nay bo qua cot D va E
                arrkq(i, j) = arrkh(i, 1) - tong1
                Exit For
            End If
        End If
    Next
Next
Sheet1.Range("A4:K6").Value = arrkq
End Sub
Chuc bạn hoc dược nhieu cai moi !!
 
mình chờ comment của bạn từ hôm thứ 7 , cám ơn bạn chút nữa mình test xem sao
 
cám ơn sự giúp đỡ của bạn, nhưng chắc mình làm bằng thủ công thôi, mình áp dụng vào bảng tính ở cty thì không được, bảng tính mình vd thì ok
 

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

Back
Top Bottom