Bàn về việc liệt kê tất cả những ngày có doanh thu Max (1 người xem)

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

honghuongkt

Thành viên hoạt động
Tham gia
23/2/13
Bài viết
100
Được thích
110
Nghề nghiệp
Kế toán
Kính chào các ACE trên diễn đàn!
Khi tìm kiếm thông tin trên diễn đàn GPE, tôi thấy có 1 bài toán rất hay về liệt kê tất cả những ngày có doanh thu lớn nhất, là dùng hàm JoinText của anh ndu.
Bài viết đó đây:
http://www.giaiphapexcel.com/forum/...m-doanh-thu-lớn-nhất-và-các-giá-trị-liên-quan

Bài toán rất hay, nhưng bây giờ do nhu cầu công việc tôi lại muốn nếu số ngày liệt kê đó >=5 ngày thì ghi là " nhiều ngày".
Mọi người xem file và chỉ giúp tôi.
Xin trân trọng cảm ơn!
 

File đính kèm

Kính chào các ACE trên diễn đàn!
Khi tìm kiếm thông tin trên diễn đàn GPE, tôi thấy có 1 bài toán rất hay về liệt kê tất cả những ngày có doanh thu lớn nhất, là dùng hàm JoinText của anh ndu.
Bài viết đó đây:
http://www.giaiphapexcel.com/forum/...m-doanh-thu-lớn-nhất-và-các-giá-trị-liên-quan

Bài toán rất hay, nhưng bây giờ do nhu cầu công việc tôi lại muốn nếu số ngày liệt kê đó >=5 ngày thì ghi là " nhiều ngày".
Mọi người xem file và chỉ giúp tôi.
Xin trân trọng cảm ơn!

trong khi đợi thầy thì thử
=JoinText(", ",TRUE,IF(COUNT(IF($B$2:$B$32=$G3,$A$2:$A$32,""))>=5,"nhieungay","itngay"))
ctrl shift enter
 
trong khi đợi thầy thì thử
=JoinText(", ",TRUE,IF(COUNT(IF($B$2:$B$32=$G3,$A$2:$A$32,""))>=5,"nhieungay","itngay"))
ctrl shift enter
Cảm ơn anh Let'GâuGâu, công thức của anh gần đúng ý của em rồi.
Ý của em là: - Nếu số ngày >=5 thì ghi " nhiều ngày"
- Nếu số ngày <5 thì liệt kê tất cả các ngày có DT Max.
 
trong khi đợi thầy thì thử
=JoinText(", ",TRUE,IF(COUNT(IF($B$2:$B$32=$G3,$A$2:$A$32,""))>=5,"nhieungay","itngay"))
ctrl shift enter
Nếu kết quả chỉ là "nhieungay" hoặc "itngay" thì đâu cần đến JoinText đâu bạn? Cứ IF + COUNTIF bình thường là được rồi

Cảm ơn anh Let'GâuGâu, công thức của anh gần đúng ý của em rồi.
Ý của em là: - Nếu số ngày >=5 thì ghi " nhiều ngày"
- Nếu số ngày <5 thì liệt kê tất cả các ngày có DT Max.
Tôi đoán là cái này:
Mã:
=IF(COUNTIF($B$2:$B$32,G3)>=5,"Nhiều ngày",JoinText(", ",TRUE,IF($B$2:$B$32=$G3,$A$2:$A$32,"")))
Thí nghiệm xem
------------------
Nói thêm về JoinText
Lúc trước trong hàm có đối số IgnoreBlanks As Boolean với mục đích cho phép người dùng tùy chọn có lấy giá trị rổng hoặc không
Sau này tôi thấy đối số này thật ra không cần thiết và đã sửa lại thành:
Mã:
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aTmp, Arr(), Item, tmp As String
  Dim i As Long, n As Long
  'On Error Resume Next
  For i = LBound(Arrays) To UBound(Arrays)
    aTmp = Arrays(i)
    If Not IsArray(aTmp) Then aTmp = Array(aTmp)
    For Each Item In aTmp
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = tmp
      End If
    Next
  Next
  If n Then JoinText = Join(Arr, Delimiter)
End Function
Các bạn dùng hàm chỉ cần 2 đối số là đủ. Giá trị nào các bạn không muốn lấy, cứ việc cho nó thành LỖI là được rồi
Ví dụ
Mã:
=JoinText(", ",IF($B$2:$B$32=$G3,$A$2:$A$32,[COLOR=#ff0000]NA()[/COLOR]))
hoặc
Mã:
=JoinText(", ",IF($B$2:$B$32=$G3,$A$2:$A$32,[COLOR=#ff0000]1/0[/COLOR]))
hoặc:
Mã:
=JoinText(", ",IF([COLOR=#ff0000]1/($B$2:$B$32=$G3)[/COLOR],$A$2:$A$32))
vô vàn cách
Những chổ màu đỏ là những chổ cố tình gây lỗi
 
Lần chỉnh sửa cuối:
Cảm ơn anh Let'GâuGâu, công thức của anh gần đúng ý của em rồi.
Ý của em là: - Nếu số ngày >=5 thì ghi " nhiều ngày"
- Nếu số ngày <5 thì liệt kê tất cả các ngày có DT Max.

cthức của bạn, chứ đâu fải của tui đâu
thì bạn cứ ì cái này nó lòi ra cái kia
=IF(COUNTIF($B$2:$B$32,G3)>=5,"nhieu ngay",JoinText(", ",TRUE,IF($B$2:$B$32=$G3,$A$2:$A$32,"")))

====
hì hì.........đã có anh ndu tra lời, nhờ mod xóa giúp
 
Xin cảm 2 anh ndu và Let'GâuGâu, công thức đúng ý của em rồi.
Nhưng 2 công thức của các anh phải kết thúc bằng Ctrl + Shift + Enter mới có kết quả, đúng không ah?
 

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

Back
Top Bottom