(VBA) Tính Tổng nhiều điều kiện (Đk > 1 giá trị)

Liên hệ QC

sangista

Thành viên mới
Tham gia
16/3/11
Bài viết
26
Được thích
1
Chào mọi người,

Hiện tại em có bảng dự liệu tính toán khoảng > 10k dòng. Nếu tính toán bằng hàm Sumifs bảng tính bị chậm.
Nhờ anh Chị hỗ trợ giúp em code VBA ạ.
Vd bên dưới: Em muốn tính tổng cột H với điều kiện theo từng Item, và >= giá trị cột Week

Em cảm ơn
1608262015732.png
 

File đính kèm

  • Hỏi GPE.xlsx
    9.9 KB · Đọc: 11
Chào mọi người,

Hiện tại em có bảng dự liệu tính toán khoảng > 10k dòng. Nếu tính toán bằng hàm Sumifs bảng tính bị chậm.
Nhờ anh Chị hỗ trợ giúp em code VBA ạ.
Vd bên dưới: Em muốn tính tổng cột H với điều kiện theo từng Item, và >= giá trị cột Week

Em cảm ơn
View attachment 251449
Lớn hơn hoặc bằng giá trị cột week là sao? cái nào lớn hơn hoặc bằng giá trị đó?
và cái này tính tổng nhiều điều kiện thì cái dk>1 giá trị là điều kiện gì xuất hiện nhiều hơn 1 lần?
1608262404079.png
 
Upvote 0
Lớn hơn hoặc bằng giá trị cột week là sao? cái nào lớn hơn hoặc bằng giá trị đó?
và cái này tính tổng nhiều điều kiện thì cái dk>1 giá trị là điều kiện gì xuất hiện nhiều hơn 1 lần?
dk > 1 giá trị nghĩa là nhiều hơn 1 điều kiện, mỗi điều kiện là 1 giá trị để so sánh
lớn hơn hoặc bằng giá trị cột week nghĩa là chỉ tính cho những dòng có week > dk

Cái cần phải hỏi lại tác giả là cộng cột nào (chả thấy cột nào có số trừ cột FC, mà FC nghĩa là gì?), kết quả để ở đâu (trong file chả có cột H và nếu để ở H thì quá vô nghĩa),
 
Upvote 0
dk > 1 giá trị nghĩa là nhiều hơn 1 điều kiện, mỗi điều kiện là 1 giá trị để so sánh
lớn hơn hoặc bằng giá trị cột week nghĩa là chỉ tính cho những dòng có week > dk

Cái cần phải hỏi lại tác giả là cộng cột nào (chả thấy cột nào có số trừ cột FC, mà FC nghĩa là gì?), kết quả để ở đâu (trong file chả có cột H và nếu để ở H thì quá vô nghĩa),
Dạ, em xl vì đã diễn đạt không rõ ý ạ. Em muốn tính tổng của cột FC, theo điều kiện là Item ở cột A, và lớn hơn >= cột Week và hàng tương ứng hàng tính tổng. Em ví dụ nếu tính hàm Sumifs sẽ công thức thế này ạ. Tổng =SUMIFS([FC],[Item],[@Item],[Week],">="&[@Week])
1608267738245.png
 
Upvote 0
Công thức để ở cột H đúng là vô nghĩa mà. Cái kết quả này không thể gọi là 1 báo cáo được, chỉ có thể gọi là dữ liệu thô thôi, tính trên đó không có ý nghĩa gì cả. Bạn phải thiết kế 1 báo cáo ít dòng hơn và lọc động hay cách nào đó để xem kết quả.
Ghi chú: đơn vị tính là Unit Of Measure, viết tắt là UOM chứ không phải OUM đâu nha
 
Upvote 0
Dạ, em xl vì đã diễn đạt không rõ ý ạ. Em muốn tính tổng của cột FC, theo điều kiện là Item ở cột A, và lớn hơn >= cột Week và hàng tương ứng hàng tính tổng. Em ví dụ nếu tính hàm Sumifs sẽ công thức thế này ạ. Tổng =SUMIFS([FC],[Item],[@Item],[Week],">="&[@Week])
View attachment 251462
Mã:
Option Explicit

Sub Tinh_Tong()
Dim DL(), KQ(), j As Long, I As Long
Dim DK1 As String, DK2 As Double
With Sheet1
    DL = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Resize(, 7).Value
    ReDim KQ(1 To UBound(DL), 1 To 1)
        For I = 1 To UBound(DL)
            DK1 = DL(I, 1)
            DK2 = DL(I, 4)
            For j = 1 To UBound(DL)
                If DL(j, 1) = DK1 And DL(j, 4) >= DK2 Then
                    KQ(I, 1) = KQ(I, 1) + DL(j, 6)
                End If
            Next
        Next
  .Range("H2").Resize(UBound(DL), 1) = KQ
End With
End Sub
Bạn thử code
Bài đã được tự động gộp:

dk > 1 giá trị nghĩa là nhiều hơn 1 điều kiện, mỗi điều kiện là 1 giá trị để so sánh
lớn hơn hoặc bằng giá trị cột week nghĩa là chỉ tính cho những dòng có week > dk

Cái cần phải hỏi lại tác giả là cộng cột nào (chả thấy cột nào có số trừ cột FC, mà FC nghĩa là gì?), kết quả để ở đâu (trong file chả có cột H và nếu để ở H thì quá vô nghĩa),
Lúc đầu em tưởng là cho một điều kiện cụ thể rồi cột week cứ lớn hơn hoặc bằng giá trị đó thì cộng theo item .giờ có kết quả mô tả mới biết là mỗi dòng là một điều kiện
 
Upvote 0
Công thức để ở cột H đúng là vô nghĩa mà. Cái kết quả này không thể gọi là 1 báo cáo được, chỉ có thể gọi là dữ liệu thô thôi, tính trên đó không có ý nghĩa gì cả. Bạn phải thiết kế 1 báo cáo ít dòng hơn và lọc động hay cách nào đó để xem kết quả.
Ghi chú: đơn vị tính là Unit Of Measure, viết tắt là UOM chứ không phải OUM đâu nha
Dạ, đây em dùng đưa vào Data để tính theo kiểu khấu hao sản phẩm khi tuần nào hết hàng để đặt hàng ạ. a hướng dẫn code VBA giúp e ạ.
Thực tế em sẽ lấy phần stock + po - FC xem khi nào cần đặt hàng
Bài đã được tự động gộp:

Mã:
Option Explicit

Sub Tinh_Tong()
Dim DL(), KQ(), j As Long, I As Long
Dim DK1 As String, DK2 As Double
With Sheet1
    DL = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Resize(, 7).Value
    ReDim KQ(1 To UBound(DL), 1 To 1)
        For I = 1 To UBound(DL)
            DK1 = DL(I, 1)
            DK2 = DL(I, 4)
            For j = 1 To UBound(DL)
                If DL(j, 1) = DK1 And DL(j, 4) >= DK2 Then
                    KQ(I, 1) = KQ(I, 1) + DL(j, 6)
                End If
            Next
        Next
  .Range("H2").Resize(UBound(DL), 1) = KQ
End With
End Sub
Bạn thử code
Bài đã được tự động gộp:


Lúc đầu em tưởng là cho một điều kiện cụ thể rồi cột week cứ lớn hơn hoặc bằng giá trị đó thì cộng theo item .giờ có kết quả mô tả mới biết là mỗi dòng là một điều kiện
cảm ơn a ạ
 
Upvote 0
Vậy UoM của iPhone là Female?
Nói chung chữ viết tắt tiếng Anh của bài này tôi không hiểu (bên trên đã nói không biết FC là gì). Thấy Kg thì hiểu là kilogram, bèn liên tưởng UOM. Female là trừu tượng quá sức tưởng tượng. Không "contacting" (beverage) nổi tới iphone
 
Upvote 0
Nói chung chữ viết tắt tiếng Anh của bài này tôi không hiểu (bên trên đã nói không biết FC là gì).
Theo như cách tính ở bài #7 thì FC là fulfillment centre. Nó là nơi hàng chuyển vào để gởi cho khách hàng.

Đại khái theo nguyên tắc quản lý hàng:
stock ở bài này có lẽ là physical stock, tức là tồn kho trước mắt.
fc là hàng đã bán nhưng chưa bốc đi
po là purchase order, tức là hàng đã/đang đặt nơi cung cấp
Như vậy, tồn kho thực tế (current stock) là:
stock + po - fc

Theo luật tính order level (tức là mức báo động để đặt thêm hàng) thì:
order level = average weekly sale * order lead time in weeks * safety factor
lead time = thời gian từ lúc đặt đến lúc nhận hàng.
safety factor = chỉ số an toàn, thường thường là 120%-150%

Tôi cũng không hiểu thớt muốn tính cái gì với mấy cái weeks như trong hình.

Tôi khong có hứng làm việc với bài này. Tiếng Việt tiếng Tây tùm lum lại còn viết tắt. Ông nôi tôi cũng không phân biệt nổi do gõ sai, dùng sai hay tại ngoài kiến thức của mình.
 
Upvote 0
Tôi cũng không hiểu thớt muốn tính cái gì với mấy cái weeks như trong hình.
Mới đầu tôi cho rằng bảng này là kết quả bán theo tuần (quá khứ), cần thống kê theo từng thời kỳ nên mới bảo ghi thẳng vào cột H là vô nghĩa.
Sau đó lại đoán là bảng dự trù kế hoạch bán cho từng tuần (tương lai) (do giải thích thêm ở bài 7). Lúc này lại càng mù mờ về ý nghĩa cột H
 
Upvote 0
Web KT

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

Back
Top Bottom