TÌM 2 GIÁ TRỊ TRONG HÀNG VỚI SỐ LẦN XUẤT HIỆN NHIỀU NHẤT

Liên hệ QC
Có xem file của anh gửi, nhưng hình như có chút gì đó... chắc nhờ anh xem lại kết quả của hai sheets.

Cảm ơn anh nhiều.
Đã chỉnh code lại, không biết có đúng ý chủ topic chưa, mọi người "xúm" nhau ngồi "xem pháo hoa GPE", chủ topic thì chắc "phẻ" rồi.
 

File đính kèm

  • MaxCT.VBA.rar
    562.4 KB · Đọc: 12
Đã chỉnh code lại, không biết có đúng ý chủ topic chưa, mọi người "xúm" nhau ngồi "xem pháo hoa GPE", chủ topic thì chắc "phẻ" rồi.
Còn chút xíu nữa anh, theo ý chủ thớt vầy:
- Mình có dùng hàm MODE tìm được giá trị xuất hiện nhiều nhất có trong hàng nhưng lại không tìm được giá trị thứ 2 với số lần xuất hiện nhiều thứ 2 có trong hàng
(Trong trường hợp trong hàng có nhiều giá trị với số lần xuất hiện nhiều nhất là như nhau thì ưu tiên lấy giá trị trong hàng từ trái qua phải)
K2 đang là 1, anh sửa thành số 0
S2 đang là 0, anh sửa thành số 1
Tức bây giờ số 0 và 1 có số tần suất xuất hiện lớn nhất bằng nhau, nhưng số nào phát sinh trước thì phải xếp hạng trên, như bây giờ đã sửa lại thì 0 xếp trước.

Còn có yêu cầu hai của chủ thớt nữa, mà cái này mới vui hơn.
Bạn ơi cho mình hỏi ạ: nếu mình muốn tìm ngược lại là thay cho tìm 2 giá trị với số lần xuất hiện nhiều nhất như trên thì bây giờ muốn tìm 2 giá trị với số lần xuất hiện ít nhất mình làm như thế nào ạ? Rất Mong sự hồi âm của các bạn!
Do yêu cầu hai này mới có màn "pháo hoa" công thức đó anh Ba Tê.

Chúc anh ngày vui. /-*+//-*+//-*+/
 
Còn chút xíu nữa anh, theo ý chủ thớt vầy:

K2 đang là 1, anh sửa thành số 0
S2 đang là 0, anh sửa thành số 1
Tức bây giờ số 0 và 1 có số tần suất xuất hiện lớn nhất bằng nhau, nhưng số nào phát sinh trước thì phải xếp hạng trên, như bây giờ đã sửa lại thì 0 xếp trước.

Còn có yêu cầu hai của chủ thớt nữa, mà cái này mới vui hơn.

Do yêu cầu hai này mới có màn "pháo hoa" công thức đó anh Ba Tê.

Chúc anh ngày vui. /-*+//-*+//-*+/
Lỡ rồi thì theo luôn ra 4 cột: Nhiều nhất, nhiều thứ nhì, Nhỏ nhất, nhỏ thứ nhì.
Nếu chủ topic "nếu" nữa thì chạy.
 

File đính kèm

  • MaxCT.VBA.rar
    563.2 KB · Đọc: 10
Lỡ rồi thì theo luôn ra 4 cột: Nhiều nhất, nhiều thứ nhì, Nhỏ nhất, nhỏ thứ nhì.
Nếu chủ topic "nếu" nữa thì chạy.
"Lỡ" thì trị cho lên "mài" luôn anh, phần Max đã "chuẩn không phải chỉnh" --=0, nhưng phần Min (bé) cũng như dzậy đó, tức cũng xếp "bé" nào trước "bé" nào sau đó anh, anh xem giả định sẳn trong file kèm để anh dễ xử các "bé".

Chúc anh ngày vui. /-*+//-*+//-*+/
 

File đính kèm

  • MaxCT.VBA3.rar
    565.8 KB · Đọc: 5
"Lỡ" thì trị cho lên "mài" luôn anh, phần Max đã "chuẩn không phải chỉnh" --=0, nhưng phần Min (bé) cũng như dzậy đó, tức cũng xếp "bé" nào trước "bé" nào sau đó anh, anh xem giả định sẳn trong file kèm để anh dễ xử các "bé".

Chúc anh ngày vui. /-*+//-*+//-*+/
Có khi nào tìm lớn nhất theo chiều trái phải, còn nhỏ nhất tìm theo phải trái không?
Chóng mặt à nghe.
 

File đính kèm

  • MaxCT.VBA3.rar
    565.3 KB · Đọc: 18
Có khi nào tìm lớn nhất theo chiều trái phải, còn nhỏ nhất tìm theo phải trái không?
Chóng mặt à nghe.
Vậy là màn "pháo hoa GPE" đã "rực rỡ" đủ màu sắc! ?><???

Chú "Ngựa núi" (Sơn Mã) kỳ này "phẻ" re như bò kéo xe rồi, khỏi phải leo núi nữa.

Còn cái "dụ" mà anh nói: phải trái - trái phải thì coi như hổng biết à nhe! chớ "dẻ" đường cho nai chạy, í lộn "ngựa núi" chạy chứ (chú ngựa này chắc dòng dõi Lạc Long Quân ở biển nên thuộc họ "cá" nhiều hơn ở núi với bà Âu Cơ, nên nhiều bài chủ thớt toàn là liên hệ đến lôtô vé số cá độ... chọc chủ thớt tí cho vui cửa vui nhà nha, đừng dzận) --=0

Chúc anh em ngày nghỉ lễ vui vẻ. /-*+//-*+//-*+/
 
Có khi nào tìm lớn nhất theo chiều trái phải, còn nhỏ nhất tìm theo phải trái không?
Chóng mặt à nghe.
Thầy ơi, bài này khi mà trong hàng mà thiếu mất một số chẳng hạn không có số 1 thì code báo lỗi không thống kê được số lần xuất hiện của số 1 là 0 lần! Cảm ơn thầy đã giúp đỡ ạ!
 
Thầy ơi, bài này khi mà trong hàng mà thiếu mất một số chẳng hạn không có số 1 thì code báo lỗi không thống kê được số lần xuất hiện của số 1 là 0 lần! Cảm ơn thầy đã giúp đỡ ạ!
Bạn hỏi tìm số lần xuất hiện nhiều nhất, nhiều thứ hai, nhỏ nhất, nhỏ thứ hai, đâu có nói tìm số lần xuất hiện của tất cả các số, hoặc không xuất hiện?
 
Thầy ơi, bài này khi mà trong hàng mà thiếu mất một số chẳng hạn không có số 1 thì code báo lỗi không thống kê được số lần xuất hiện của số 1 là 0 lần! Cảm ơn thầy đã giúp đỡ ạ!
Bạn đưa ra dữ liệu 1 đàng, lại đi hỏi một nẻo....
Nếu số 1 không hiện hữu trong bảng thì các ô đó trống rỗng (blank) thì có đâu mà tính tần suất xuất hiện như yêu cầu ban đầu của bạn đưa ra. Tức là, yêu cầu lúc đầu: hễ có xuất hiện trong bảng thì xem nó nhiều nhất hay ít nhất, và nhiều/ít hạng thứ mấy.... rồi tìm hạng 1,2 nhiều ít nhất. Số 1 do không hiện hữu thì làm sao nó tính bằng 0 đồng nghĩa là ít nhất đây!!?
Trước khi hỏi bạn cũng phải xem câu hỏi mình có mâu thuẩn gì với yêu cầu không! rồi hẳn hãy hỏi.
 
Bạn đưa ra dữ liệu 1 đàng, lại đi hỏi một nẻo....
Nếu số 1 không hiện hữu trong bảng thì các ô đó trống rỗng (blank) thì có đâu mà tính tần suất xuất hiện như yêu cầu ban đầu của bạn đưa ra. Tức là, yêu cầu lúc đầu: hễ có xuất hiện trong bảng thì xem nó nhiều nhất hay ít nhất, và nhiều/ít hạng thứ mấy.... rồi tìm hạng 1,2 nhiều ít nhất. Số 1 do không hiện hữu thì làm sao nó tính bằng 0 đồng nghĩa là ít nhất đây!!?
Trước khi hỏi bạn cũng phải xem câu hỏi mình có mâu thuẩn gì với yêu cầu không! rồi hẳn hãy hỏi.
Dạ, mình xin lỗi ạ. Vì mình làm mãi vừa mới bị 1 trường hợp là trong dãy nào đó khi thiếu mất đi 1 số ví dụ như số 1 chẳng hạn thì code báo lỗi không liệt kê ra số nào ra ít nhất ạ!
 
Bạn hỏi tìm số lần xuất hiện nhiều nhất, nhiều thứ hai, nhỏ nhất, nhỏ thứ hai, đâu có nói tìm số lần xuất hiện của tất cả các số, hoặc không xuất hiện?
Dạ, đúng rồi thầy ạ, vẫn là tìm giá trị với số lần xuất hiện nhiều nhất, nhiều thứ hai, nhỏ nhất , nhỏ thứ hai. Chỉ là khi em làm vừa mới có trường hợp tự nhiên báo lỗi không ra kết quả. Em mày mò mãi mới phát hiện ra là trong trường hợp nếu trong hàng mà thiếu đi một số nào đó (Ví dụ trong hàng nào đó mà không có số 1 chẳng hạn) thì code sẽ báo lỗi không ra kết quả thầy ạ. Mong thầy xem giúp ạ! Xin cảm ơn thầy!
 
Dạ, mình xin lỗi ạ. Vì mình làm mãi vừa mới bị 1 trường hợp là trong dãy nào đó khi thiếu mất đi 1 số ví dụ như số 1 chẳng hạn thì code báo lỗi không liệt kê ra số nào ra ít nhất ạ!
Vậy thì bạn chờ tôi xem lại coi sao.
Dùng công thức như các bạn khác thì sao, có lỗi không?
 
Vậy thì bạn chờ tôi xem lại coi sao.
Dùng công thức như các bạn khác thì sao, có lỗi không?
Dạ, dùng công thức thì không có lỗi thầy ạ! Nhưng dùng VBA như thầy thì file nhanh mà gọn rất nhiều ạ! Xin cảm ơn thầy nhiều!
 
Dạ, dùng công thức thì không có lỗi thầy ạ! Nhưng dùng VBA như thầy thì file nhanh mà gọn rất nhiều ạ! Xin cảm ơn thầy nhiều!
Do bạn hỏi ban đầu là Max, Viết code xong lại muốn có thêm Min, ghép tới ghép lui thành 1 nùi rối tung.
Tách thành 2 hàm Max và Min luôn cho lành. Bạn kiểm tra lại xem sao.
Bạn thử cho biết bạn làm công việc gì với kiểu số liệu này?
 

File đính kèm

  • MaxCT.VBA4.rar
    566 KB · Đọc: 18
thử với sub nầy xem sao
Mã:
Sub Max_Min_1_2()
Dim Darr(), Farr(), Arr(), Sarr(), i As Long, j As Long, Tmp
Darr = Range("G2", Cells(Range("G2").End(xlDown).Row, Range("XFD2").End(xlToLeft).Column)).Value
ReDim Arr(1 To UBound(Darr), 1 To 4)
For i = 1 To UBound(Darr)
  ReDim Farr(0 To 36)
  For j = 1 To UBound(Darr, 2)
    Tmp = Darr(i, j)
    If Tmp <> "" Then Farr(Tmp) = Farr(Tmp) + 1
  Next j
  Sarr = SortArr(Farr)
  Arr(i, 1) = Sarr(UBound(Sarr))      ' lon 1
  Arr(i, 2) = Sarr(UBound(Sarr) - 1)  ' lon 2
  Arr(i, 3) = Sarr(0)                 ' nho 1
  Arr(i, 4) = Sarr(1)                 ' nho 2
Next i
Range("C2").Resize(UBound(Darr), 4) = Arr
End Sub
Private Function SortArr(ByVal Sarr As Variant)
  Dim sList As Object, oList1 As Object, oList2 As Object, Arr As Variant, Tmp As String, i As Long, idx As Long
  Set oList1 = CreateObject("System.Collections.arrayList")
  Set oList2 = CreateObject("System.Collections.arrayList")
  For i = LBound(Sarr) To UBound(Sarr)
    If Sarr(i) <> "" Then
      oList1.Add Sarr(i) + i / 20000
      oList2.Add i
    End If
  Next
  Set sList = oList1.Clone
  sList.Sort
  ReDim Arr(0 To sList.Count - 1)
  For i = 0 To sList.Count - 1
    idx = oList1.InDexOf(sList(i), 0)
    Arr(i) = oList2(idx)
  Next
  SortArr = Arr
End Function
 
Web KT

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

Back
Top Bottom