1

Тема: Самое частое значение

Здравствуйте, у меня есть некий набор цифр, например 1,2,3,4,1,3,8,10 и тд. Нужно получить самое часто встречающиеся число. Как это сделать?
Заранее спасибо!

2

Re: Самое частое значение

Предлагаю следующий расчет (см. приложение).
Числа предварительно должны быть отсортированы по возрастанию.
Постарайтесь разобраться, и, если будут вопросы, - пишите.

Post's attachments

ПоискЧисла.xlsx 10.63 Кб, 5 скачиваний с 2015-04-02 

You don't have the permssions to download the attachments of this post.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Самое частое значение

числа целые или могут быть дробные
какое самое большое число (значность имею ввиду)

4

Re: Самое частое значение

Формула массива (вводится одновременным нажатием Shift-Ctrl-Enter, при этом формула заключается в фигурные скобки)

=ЕСЛИ(СЧЁТЕСЛИ(A1:A7;A1:A7)=МАКС(СЧЁТЕСЛИ(A1:A7;A1:A7));A1:A7;"")

5

Re: Самое частое значение

Приношу свои извинения, вчера несколько поторопился выложить формулу - она требует доработки. По здравому размышлении, наиболее удачной из всех опробованных формул, мне показалась эта (увы, так же массивная)

=ИНДЕКС(A1:A6;ПОИСКПОЗ(МАКС(СЧЁТЕСЛИ(A1:A6;A1:A6));СЧЁТЕСЛИ(A1:A6;A1:A6);0))

В то же время, при больших объемах данных массивные формулы могут начинать тормозить. Поэтому, возможно, эффективнее будет использовать следующую UDF

Function MaxRate(Rng As Range) As Double
    Dim arr(), Dict As Object, i As Long, j As Long
    arr = Rng.Value
    Set Dict = CreateObject("Scripting.Dictionary")
    With Dict
        For i = 1 To UBound(arr)
            If .Exists(arr(i, 1)) Then .Item(arr(i, 1)) = .Item(arr(i, 1)) + 1 Else .Add Key:=arr(i, 1), Item:=1
        Next
        j = WorksheetFunction.Match(WorksheetFunction.Max(.Items), .Items)
        arr = .Keys
        MaxRate = CDbl(arr(j - 1))
    End With
End Function