Công thức đếm các giá trị gần nhau lớn nhất

Liên hệ QC

hoangminhtien

Thành viên gắn bó
Tham gia
29/2/08
Bài viết
1,662
Được thích
2,191
Nghề nghiệp
Mechanical Engineering
Công thức này em đã đọc đâu đó trên diễn đàn rồi nhưng tìm lại mà không được.
Em có vùng dữ liệu (1 cột hay 1 dòng) em muốn đếm xem số giá trị giống nhau gần nhau lớn nhất trong vũng dữ liệu đó. Em diễn giải khó hiểu, các bác xem trong file để hiểu thêm rồi giúp em nhé!
 

File đính kèm

  • Book1.xls
    17 KB · Đọc: 54
Công thức này em đã đọc đâu đó trên diễn đàn rồi nhưng tìm lại mà không được.
Em có vùng dữ liệu (1 cột hay 1 dòng) em muốn đếm xem số giá trị giống nhau gần nhau lớn nhất trong vũng dữ liệu đó. Em diễn giải khó hiểu, các bác xem trong file để hiểu thêm rồi giúp em nhé!

Chia sẻ !!!
Gửi bạn File tham khảo, cái này của Bác PTM
Hy vọng giúp ích được cho bạn???
 

File đính kèm

  • 1Count_Vote_TestPtm(1).rar
    5.7 KB · Đọc: 39
Cám ơn bác đã gửi file tham khảo, tuy nhiên câu hỏi của em lại khác (do em giải thích không rõ ràng).
Câu hỏi của em là đếm số giá trị lớn nhất gần nhau (liên tiếp) của 1 giá trị nào đó (ví dụ trong file la a).
Các bác nào hiểu giúp em với nha
 
Biếu thêm món nộm ăn kèm đây

Câu hỏi của em là đếm số giá trị lớn nhất gần nhau (liên tiếp) của 1 giá trị nào đó (ví dụ trong file la a).
Các bác nào hiểu giúp em với nha

PHP:
Option Explicit
Function CountMax(LookUpRange As Range, Optional Value_ As Boolean = False)
 Dim Clls As Range, StrC As String, Jj As Byte, SMax As String, Max_ As Byte
 
 Jj = 1
 For Each Clls In LookUpRange
   If Clls.Value <> StrC Then
      If Jj > Max_ Then
         If Value_ Then SMax = StrC
         Max_ = Jj
      End If
      StrC = Clls.Value:                       Jj = 1
   Else
      Jj = Jj + 1
   End If
 Next Clls
 CountMax = IIf(Value_, SMax, Max_)
End Function
 
Cám ơn bác SA nhé, ý em muốn tạo 1 hàm có cấu trúc HAM(range, text_count).
Với range : là vùng cần đếm
Text_count : là giá trị cần đếm (ví dụ mình có thể nhập “a”, “b” hoặc “c”…)
HAM sẽ trả về kết quả số các giá trị gần nhau liên tiếp của text_count trong vùng range
Hàm của bác đếm số gần nhau liên tiếp lớn nhất trong một dãy hoặc cho giá trị thỏa mãn có số liên tiếp nhiều nhất. công thức rất hay.
Nhờ các bác giúp tiếp em nhé!
 
& đây, xin mời!

PHP:
Option Explicit
Function CountMaxFor(LookUpRange As Range, LookUpValue As String)
 Dim Clls As Range, Jj As Byte, Temp As String
 
 For Each Clls In LookUpRange
   If Clls.Value = LookUpValue Then
      If Clls.Value <> Temp Then
         Temp = Clls.Value
      Else
         Jj = Jj + 1
      End If
   Else
      If Temp = LookUpValue Then _
         If CountMaxFor < Jj Then CountMaxFor = Jj
      Jj = 1:              Temp = ""
   End If
 Next Clls
End Function

Tại [M2] bạn áp công thức =CountMaxFor($A2:$K2, F2)

Sau đó Copy xuống 2 ô dưới & nắm kéo sang cột trái để chiêm nghiệm kết quả!

Chúc thành công!
 
Cám ơn bác SA nhiều! Tuy nhiên công thức vẫn chưa cho ra kết quả mong muốn bác ạ. Bác xem trong file rồi giúp em tiếp với nhé!
 

File đính kèm

  • Book1.xls
    23 KB · Đọc: 9
Công thức này em đã đọc đâu đó trên diễn đàn rồi nhưng tìm lại mà không được.
Em có vùng dữ liệu (1 cột hay 1 dòng) em muốn đếm xem số giá trị giống nhau gần nhau lớn nhất trong vũng dữ liệu đó. Em diễn giải khó hiểu, các bác xem trong file để hiểu thêm rồi giúp em nhé!
Loại bài này đã nói nhiều lần trên diển đàn rồi
Gữi bạn code đơn giản nhất (mà có lẽ ai cũng hiểu được)
PHP:
Function CountMax(SrcRng As Range, FStr As String) As Long
  Dim Clls As Range, i As Long
  For Each Clls In SrcRng
    If Clls.Value = FStr Then
      i = i + 1
    Else
      If CountMax < i Then CountMax = i
      i = 0
    End If
  Next
End Function
Giải thuật rất đơn giản:
I> Đầu tiên, hàm CountMax được khai báo là biến Long ---> Vì thế giá trị ban đầu của nó đương nhiên bằng 0
II> Duyệt qua tất các các cell trong vùng dữ liệu
1) Nếu Cell có giá trị = giá trị tìm thì tăng biến i lên 1
2) Ngược lại, cell có giá trị <> giá trị tìm thì:
So sánh CountMax với i, nếu CountMax < i thì gán CountMax = i, đồng thời cho i = 0
--------------------
 

File đính kèm

  • CountMax.xls
    22.5 KB · Đọc: 28
Lần chỉnh sửa cuối:
Cám ơn bác ndu96081631 nhưng em test thấy kết chưa được chính xác bác ạ. Bác xem trong file rồi sửa lại cho em với nhé!
 

File đính kèm

  • CountMax.xls
    23 KB · Đọc: 11
Bác SA ơi, em test lại thấy kết quả của bác vẫn chưa được bác ạ, bác xem trong file rồi chỉnh lại em với!
 

File đính kèm

  • bac SA.xls
    23.5 KB · Đọc: 9
Ừ hén, còn trường hợp cuối vòng lặp nữa!; Xin cảm ơn nha

Bác SA ơi, em test lại thấy kết quả của bác vẫn chưa được bác ạ, bác xem trong file rồi chỉnh lại em với!

Bạn thêm câu lệnh này trước khi thoát:

PHP:
If Jj > Dem Then Dem=Jj
 
Cám ơn bác ndu96081631 nhưng em test thấy kết chưa được chính xác bác ạ. Bác xem trong file rồi sửa lại cho em với nhé!
Sorry vì quên vụ VÙNG LỚN NHẤT LÀ VÙNG CUỐI CÙNG
sửa thế này:
PHP:
Function CountMax(SrcRng As Range, FStr As String) As Long
  Dim Clls As Range, i As Long, Temp
  For Each Clls In SrcRng
    If Clls.Value = FStr Then
      i = i + 1
    Else
      If Temp < i Then Temp = i
      i = 0
    End If
  Next
  CountMax = IIf(Temp < i, i, Temp)
End Function
Tức so sánh thêm lần nữa vào cuối code
(Bài này đã làm ít nhất 5 lần rồi, vậy mà làm lại vẫn có sai sót)
 
Cảm ơn về đoạn code, em đang cần nó, thanks nhiều!
 
Không hỏi nữa vì dùng code cũng được
 

File đính kèm

  • CountMax.xls
    26.5 KB · Đọc: 8
Lần chỉnh sửa cuối:
Cong thuc gan giong CountMax

Sorry vì quên vụ VÙNG LỚN NHẤT LÀ VÙNG CUỐI CÙNG
sửa thế này:
PHP:
Function CountMax(SrcRng As Range, FStr As String) As Long
  Dim Clls As Range, i As Long, Temp
  For Each Clls In SrcRng
    If Clls.Value = FStr Then
      i = i + 1
    Else
      If Temp < i Then Temp = i
      i = 0
    End If
  Next
  CountMax = IIf(Temp < i, i, Temp)
End Function
Tức so sánh thêm lần nữa vào cuối code
(Bài này đã làm ít nhất 5 lần rồi, vậy mà làm lại vẫn có sai sót)

Cám ơn Anh NDU, em đã áp dụng được Công thức Countmax.

Nay em có bài tập cần công thức có vẻ tương tự CountMax, (em giải thích như trong file đính kèm).

Mong Anh & các Anh Chị Em giúp đỡ.

Em cám ơn nhiều.

Chào các bạn,

Tham khảo trang web http://www.excelforum.com/excel-wor...96-count-cells-since-last-non-zero-value.html
và bổ sung thêm công thức mình làm được theo yêu cầu với công thức:
=(COLUMNS(I5:IV5)-MATCH(2,1/(I5:IV5=1)))-COUNTBLANK(I5:IV5)

(xem file đính kèm).
 

File đính kèm

  • Dang khac cua CountMax_Final.xls
    64 KB · Đọc: 6
Lần chỉnh sửa cuối:
Công thức này em đã đọc đâu đó trên diễn đàn rồi nhưng tìm lại mà không được.
Em có vùng dữ liệu (1 cột hay 1 dòng) em muốn đếm xem số giá trị giống nhau gần nhau lớn nhất trong vũng dữ liệu đó. Em diễn giải khó hiểu, các bác xem trong file để hiểu thêm rồi giúp em nhé!

Mình đang dùng công thức CountMax của Anh Ndu. Tuy nhiên mình mới tìm được công thức tương tự trên mạng mà không cần dùng macro, bạn dùng thử xem sao:

=MAX(FREQUENCY(IF(A2:K2 = "a",COLUMN(A2:K2)),IF(A2:K2 <> "a",COLUMN(A2:K2))))

Kết thúc bằng Ctrl + Shift + Enter
 
Web KT

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

Back
Top Bottom