Tính theo điều kiện và lấy phần nguyên (1 người xem)

  • Thread starter Thread starter vnproc
  • Ngày gửi Ngày gửi

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

vnproc

Thành viên hoạt động
Tham gia
1/2/11
Bài viết
150
Được thích
6
Mình làm 1 bài để lọc và tính thưởng cho khách hàng. Nhưng vẫn ko lấy đúng được điều kiện. Mong các bạn giúp cho. Cảm ơn nhiều
 

File đính kèm

Mình làm 1 bài để lọc và tính thưởng cho khách hàng. Nhưng vẫn ko lấy đúng được điều kiện. Mong các bạn giúp cho. Cảm ơn nhiều

phải chia nó ra chứ đâu có kết hợp vào một cái được.
Mã:
=SUMPRODUCT(($B$2:$B$7=B16)*($A$2:$A$7="FG0001")*($D$2:$D$7>=780)*INT($D$2:$D$7/780))+SUMPRODUCT(($B$2:$B$7=B16)*($A$2:$A$7="FG0002")*($D$2:$D$7>=20)*INT($D$2:$D$7/20))
 
Mình làm 1 bài để lọc và tính thưởng cho khách hàng. Nhưng vẫn ko lấy đúng được điều kiện. Mong các bạn giúp cho. Cảm ơn nhiều
Bạn xài Excel 2007 trở lên thì dùng các hàm này thử xem:
PHP:
C16=IF(COUNTIFS($B$2:$B$7;B16;$A$2:$A$7;"FG0001")+COUNTIFS($B$2:$B$7;B16;$A$2:$A$7;"FG0002")>=2;INT(SUMIFS($D$2:$D$7;$B$2:$B$7;B16;$A$2:$A$7;"FG0001")/780)+INT(SUMIFS($D$2:$D$7;$B$2:$B$7;B16;$A$2:$A$7;"FG0002")/20);"")
KH B mua FG0001 2 lần là 4000, gom chung lại chia cho 780 hay tách ra 2 lần 2000/780 ?
Gom chung lại là 5 nhưng tách ra là 4. Híc.
 
Lần chỉnh sửa cuối:
Bạn xài Excel 2007 trở lên thì dùng các hàm này thử xem:
PHP:
C16=IF(COUNTIFS($B$2:$B$7;B16;$A$2:$A$7;"FG0001")+COUNTIFS($B$2:$B$7;B16;$A$2:$A$7;"FG0002")>=2;INT(SUMIFS($D$2:$D$7;$B$2:$B$7;B16;$A$2:$A$7;"FG0001")/780)+INT(SUMIFS($D$2:$D$7;$B$2:$B$7;B16;$A$2:$A$7;"FG0002")/20);"")
KH B mua FG0001 2 lần là 4000, gom chung lại chia cho 780 hay tách ra 2 lần 2000/780 ?
Gom chung lại là 5 nhưng tách ra là 4. Híc.

Copy Công thức vào chạy báo lổi bạn à. Nó báo ở ($B$2:$B$7)
 
Mình gửi lại file ghi rõ hơn điều kiện thưởng và hệ số Mong các bạn giúp

Cảm ơn.
 

File đính kèm

Mình xài hàm tự tạo sau

PHP:
Option Explicit
Function TinhThuong(Rng As Range, KHg As String) As Double
 Dim Cls As Range, TT1 As Double, TT2 As Double
 Const F1 As String = "FG0001"
 Const F2 As String = "FG0002"
 
 For Each Cls In Rng(1).Resize(Rng.Rows.Count)
    If Cls.Offset(, 1).Value = KHg Then
        If Cls.Value = F1 Then
            TT1 = TT1 + Cls.Offset(, 3).Value \ 780
        ElseIf Cls.Value = F2 Then
            TT2 = TT2 + Cls.Offset(, 3).Value \ 20
        End If
    End If
 Next Cls
 If TT1 > 0 And TT2 > 0 Then TinhThuong = TT1 + TT2
End Function

Khi đó cú fáp tại [C16] sẽ là =TinhThuong(Tabl1,B16)

ở đây Tabl1 là vùng được gán tên [A1:C7]
 
PHP:
Option Explicit
Function TinhThuong(Rng As Range, KHg As String) As Double
 Dim Cls As Range, TT1 As Double, TT2 As Double
 Const F1 As String = "FG0001"
 Const F2 As String = "FG0002"
 
 For Each Cls In Rng(1).Resize(Rng.Rows.Count)
    If Cls.Offset(, 1).Value = KHg Then
        If Cls.Value = F1 Then
            TT1 = TT1 + Cls.Offset(, 3).Value \ 780
        ElseIf Cls.Value = F2 Then
            TT2 = TT2 + Cls.Offset(, 3).Value \ 20
        End If
    End If
 Next Cls
 If TT1 > 0 And TT2 > 0 Then TinhThuong = TT1 + TT2
End Function

Khi đó cú fáp tại [C16] sẽ là =TinhThuong(Tabl1,B16)

ở đây Tabl1 là vùng được gán tên [A1:C7]

Cảm ơn ChanhTQ. Cho mình hỏi bạn làm trên file mình mới upload lên hay là file trước. File mới upload lên mình ghi rõ và đầy đủ và rõ hơn.
 
Lần chỉnh sửa cuối:
Cảm ơn ChanhTQ. Cho mình hỏi bạn làm trên file mình mới upload lên hay là file trước. File mới upload lên mình ghi rõ và đầy đủ và rõ hơn.
Đọc câu này mà "rõ hơn" sao.
Những khách hàng mua sản phẩm FG0001/780 lấy phần nguyên ví dụ = 3 và mua sản phẩm FG0002/20 lấy phần nguyên =2 thì hệ số là 3 số lượng thưởng tính là 2*20
Giải thích thêm 1 câu làm rối hơn những câu trước.
"Hệ số là 3" thì ảnh hưởng gì đến kết quả? 20 ở đâu mà có?
 
Cảm ơn ChanhTQ. Cho mình hỏi bạn làm trên file mình mới upload lên hay là file trước. File mới upload lên mình ghi rõ và đầy đủ và rõ hơn.
Bạn xem thời gian đưa 2 bài lên sẽ rõ, cần gì fải hỏi!
 
Đọc câu này mà "rõ hơn" sao.

Giải thích thêm 1 câu làm rối hơn những câu trước.
"Hệ số là 3" thì ảnh hưởng gì đến kết quả? 20 ở đâu mà có?

Sorry mình ghi nhầm.
"Những khách hàng mua sản phẩm FG0001/780 lấy phần nguyên ví dụ = 3 và mua sản phẩm FG0002/20 lấy phần nguyên =2 thì hệ số là 2 số lượng thưởng tính là 2*20" (công thức nó là hệ số * 20 cái 20 này là cố đình). Cái này dạng như nó lấy mẫu số chung nhỏ nhất vậy.

Nội dung của nó là : Khách hàng mua sp FG0001 số lượng 780 và sp FG0002 sô lượng 20 thì được thưởng 20.
 
Lần chỉnh sửa cuối:
Sorry mình ghi nhầm.
(Những khách hàng mua sản phẩm FG0001/780 lấy phần nguyên ví dụ = 3 và mua sản phẩm FG0002/20 lấy phần nguyên =2 thì hệ số là 2 số lượng thưởng tính là 2*20). Cái này dạng như nó lấy mẫu số chung nhỏ nhất vậy.
Bạn ví dụ cũng phải cụ thể trên file, Ví dụ bằng câu chữ trên này thì so sanh sao được.
Xem trong file này và bạn muốn nó có kết quả là bao nhiêu, bạn nhập thủ công vào để mọi người "mò" ra kết quả.
Đâu phải ai cũng làm chung ngành với bạn mà chỉ cần bạn "nháy mắt" là hiểu bạn muốn gì.
Giải thích và ghi Kết quả cụ thể trường hợp KH B đi.
 

File đính kèm

Bạn ví dụ cũng phải cụ thể trên file, Ví dụ bằng câu chữ trên này thì so sanh sao được.
Xem trong file này và bạn muốn nó có kết quả là bao nhiêu, bạn nhập thủ công vào để mọi người "mò" ra kết quả.
Đâu phải ai cũng làm chung ngành với bạn mà chỉ cần bạn "nháy mắt" là hiểu bạn muốn gì.
Giải thích và ghi Kết quả cụ thể trường hợp KH B đi.

Hệ số mã thưởng của khách hàng B là 4 và kết quả là 4*20=80. Khách hàng B mua 4000 sp FG0001 INT(4000/780)=4 và sp FG0002 (2000/20) =100 Lấy mẫu số chung nhỏ nhất là 4.
 
Sorry mình ghi nhầm.
"Những khách hàng mua sản phẩm FG0001/780 lấy phần nguyên ví dụ = 3 và mua sản phẩm FG0002/20 lấy phần nguyên =2 thì hệ số là 2 số lượng thưởng tính là 2*20" (công thức nó là hệ số * 20 cái 20 này là cố đình). Cái này dạng như nó lấy mẫu số chung nhỏ nhất vậy.

Nội dung của nó là : Khách hàng mua sp FG0001 số lượng 780 và sp FG0002 sô lượng 20 thì được thưởng 20.

Câu cú của bạn lủng củng, và bạn không biết miêu tả chính xác thì mệt lắm để hiểu được bạn.
Mà khi người giúp đã không hiểu và hỏi thì phải trả lời.

Câu hỏi lặp lại một lần nữa: Khi cùng một sản phẩm mà khách mua nhiều lần thì tính thế nào?
Vd. B mua sản phẩm FG001 tới 2 lần với số lượng 2000 và 2000. Vậy hệ số là làm tròn(2000/780) + làm tròn(2000/780) = 2 + 2 = 4 hay là làm tròn((2000 + 2000)/780) = 5???

Tôi thử phát biểu bạn xem đúng không.

1. Giả sử khách hàng X mua a (tổng cộng nhiều lần mua) sản phẩm FG001, và b (tổng cộng nhiều lần mua) sản phẩm FG002. Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20.
Số lượng thưởng = c * 20 trong đó c = min(làm tròn(a/780), làm tròn (b/20))

Nếu ý bạn khác thì hãy miêu tả rõ như thế. Miêu tả như bạn là nhiều hình thức (tốn mực nhiều) nhưng ít nội dung (ít thông tin)
 
Thank bạn.

Vd. B mua sản phẩm FG001 tới 2 lần với số lượng 2000 và 2000. Vậy hệ số là làm tròn(2000/780) + làm tròn(2000/780) = 2 + 2 = 4 hay là làm tròn((2000 + 2000)/780) = 5???

(Lấy tròn là 5)

Tôi thử phát biểu bạn xem đúng không.

1. Giả sử khách hàng X mua a (tổng cộng nhiều lần mua) sản phẩm FG001, và b (tổng cộng nhiều lần mua) sản phẩm FG002. Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20.
Số lượng thưởng = c * 20 trong đó c = min(làm tròn(a/780), làm tròn (b/20))

c là min làm tròn của (a/780) và (b/20)
 
Thank bạn.

Vd. B mua sản phẩm FG001 tới 2 lần với số lượng 2000 và 2000. Vậy hệ số là làm tròn(2000/780) + làm tròn(2000/780) = 2 + 2 = 4 hay là làm tròn((2000 + 2000)/780) = 5???

(Lấy tròn là 5)

Tôi thử phát biểu bạn xem đúng không.

1. Giả sử khách hàng X mua a (tổng cộng nhiều lần mua) sản phẩm FG001, và b (tổng cộng nhiều lần mua) sản phẩm FG002. Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20.
Số lượng thưởng = c * 20 trong đó c = min(làm tròn(a/780), làm tròn (b/20))

c là min làm tròn của (a/780) và (b/20)
Điều kiện quá lu bu nên xài hàm tự tạo thử xem.
Nhớ Enable Macros khi mở file.
Cấu trúc hàm:
=HicHic(RgKH As Range, MaKH As String, RgSP As Range, MaSP1 As String, MaSP2 As String, RgSL As Range)
 

File đính kèm

Thank bạn.

Vd. B mua sản phẩm FG001 tới 2 lần với số lượng 2000 và 2000. Vậy hệ số là làm tròn(2000/780) + làm tròn(2000/780) = 2 + 2 = 4 hay là làm tròn((2000 + 2000)/780) = 5???

(Lấy tròn là 5)

Tôi thử phát biểu bạn xem đúng không.

1. Giả sử khách hàng X mua a (tổng cộng nhiều lần mua) sản phẩm FG001, và b (tổng cộng nhiều lần mua) sản phẩm FG002. Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20.
Số lượng thưởng = c * 20 trong đó c = min(làm tròn(a/780), làm tròn (b/20))

c là min làm tròn của (a/780) và (b/20)

Nếu thế thì thực ra có thể bỏ "Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20". Vì nếu a < 780 hoặc b < 20 thì làm tròn (a/780) = 0 hoặc làm tròn (b/20) = 0. Tức MIN(...) = 0

công thức cho C17
Mã:
=MIN(INT(SUMIFS($D$2:$D$7;$B$2:$B$7;$B17;$A$2:$A$7;"FG0001")/780);INT(SUMIFS($D$2:$D$7;$B$2:$B$7;$B17;$A$2:$A$7;"FG0002")/20))

D17
Mã:
=$C17*20
 
Thanks Ba Tê nhiều đã ra đúng cái mình cần.
Tôi cũng chưa hiểu ý của bạn lắm, có chắc là đúng không?
KH C mua 3 lần SP FG0002, mỗi lần đều 15, nếu tính từng lần <20 thì không tính ==> cả 3 lần đều không tính
Nếu tính tổng 3 lần là 45/20 làm tròn lại thì tính là 2.
Cái nào đúng?
 

File đính kèm

Thanks Ba Tê nhiều đã ra đúng cái mình cần.

Đúng là bó tay với bạn.
Với code "đúng cái mình cần" thì ...
Nếu B mua FG0001 tới 2 lần với số lượng là 700 và 3300 thì code trả về
Mã:
hệ số = làm tròn (3300 / 780) = [SIZE=5][COLOR=#ff0000]4[/COLOR][/SIZE]

Nếu bạn không biết đọc code thì chỉ cần sửa 2000 và 2000 thành 700 và 3300 thì sẽ thấy hệ số = 4

Trong khi đó nếu theo như tôi phát biểu hộ bạn và bạn gật đầu lia lịa để khẳng định

Thank bạn.

Vd. B mua sản phẩm FG001 tới 2 lần với số lượng 2000 và 2000. Vậy hệ số là làm tròn(2000/780) + làm tròn(2000/780) = 2 + 2 = 4 hay là làm tròn((2000 + 2000)/780) = 5???

(Lấy tròn là 5)

Tôi thử phát biểu bạn xem đúng không.

1. Giả sử khách hàng X mua a (tổng cộng nhiều lần mua) sản phẩm FG001, và b (tổng cộng nhiều lần mua) sản phẩm FG002. Khách hàng được thưởng khi và chỉ khi a ≥ 780 và b ≥ 20.
Số lượng thưởng = c * 20 trong đó c = min(làm tròn(a/780), làm tròn (b/20))

c là min làm tròn của (a/780) và (b/20)

thì
Mã:
hệ số = làm tròn ((700 + 3300) / 780) = làm tròn (4000 / 780) = [SIZE=5][COLOR=#ff0000]5[/COLOR][/SIZE]
----------
Bạn còn độc thân? Chắc chắn sẽ gật
Bạn chắc chắn có vợ đẹp con khôn! Chắc chắn sẽ gật.

Thôi thì dọn đồ chơi ngay cho khỏi mất công.
 
Lần chỉnh sửa cuối:
Đúng là bó tay với bạn.
Với code "đúng cái mình cần" thì ...
Nếu B mua FG0001 tới 2 lần với số lượng là 700 và 3300 thì code trả về
Mã:
hệ số = làm tròn (3300 / 780) = [SIZE=5][COLOR=#ff0000]4[/COLOR][/SIZE]

Nếu bạn không biết đọc code thì chỉ cần sửa 2000 và 2000 thành 700 và 3300 thì sẽ thấy hệ số = 4

Trong khi đó nếu theo như tôi phát biểu hộ bạn và bạn gật đầu lia lịa để khẳng định



thì
Mã:
hệ số = làm tròn ((700 + 3300) / 780) = làm tròn (4000 / 780) = [SIZE=5][COLOR=#ff0000]5[/COLOR][/SIZE]
----------
Bạn còn độc thân? Chắc chắn sẽ gật
Bạn chắc chắn có vợ đẹp con khôn! Chắc chắn sẽ gật.

Thôi thì dọn đồ chơi ngay cho khỏi mất công.

Mình không biết sao nhưng có lẽ trong dữ liệu mình ko có cái như bạn giả sử. Nhưng mình thấy code của Ba Tê là đúng và cho mình kết quả là đúng thì nói đúng thôi.
 
Mình không biết sao nhưng có lẽ trong dữ liệu mình ko có cái như bạn giả sử. Nhưng mình thấy code của Ba Tê là đúng và cho mình kết quả là đúng thì nói đúng thôi.

Nếu tất cả mọi khách hàng của bạn, không có ngoại lệ nào cả, mỗi lần luôn mua > 779 mặt hàng FG0001 hoặc > 19 mặt hàng FG0002 thì chả còn gì để nói. À, còn một câu: Chúc mừng, chúc mừng. Vì từ xưa tới nay, từ Đông sang Tây, từ Bắc xuống Nam chưa có một nhà bán hàng nào đạt được thành tích như thế. Thành thực chúc mừng.
 

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

Back
Top Bottom