Страницы: 1
RSS
РАНГ с условием, определение ранга временной точки в соответствующей дате
 
Здравствуйте.

В таблице, подобной той, что в прикрепленном файле ведется учет временных точек наступления определенных событий.
Для определения ранга временной точки внутри соответствующих ей суток сделал формулу:
{=РАНГ(B2;$B$2:$B$26*($A$2:$A$26=A2);1)}
но excel отказывается ее принять
пробовал еще строить разные конструкции с использованием всяких ЕСЛИ и прочих СУММПРОИЗВов, но безрезультатно...
заранее спасибо за любую информацию на эту тему
 
Если периоды отсортированы, то =ЕСЛИ(A2=A1;C1+1;1) или =СЧЁТЕСЛИ($A$1:A2;A2)
Изменено: Ivan.kh - 20.04.2019 20:33:01
 
Дело в том, что могут быть не отсортированы
 
И дни неотсортированы или только время?
 
сортировка может применяться по другим столбцам рабочей таблицы... и получается, что в столбцах с датой и временем хронологическая последовательность нарушается.
т.е. формула нужна такая, которая не будет зависима от "правильной" сортировки в этих двух столбцах.
 
Код
Function myRank(mCell As Range, mRange As Range, mCond As Range)
    
    q = ""
    For Each cell In mRange
        If CStr(cell.Value) = mCond.Value Then
            q = q + Cells(cell.Row, mCell.Column).Address + ","
        End If
    Next
    
    If q = "" Then
        myRank = 0
    Else
        With mCell.Worksheet
            Set rngR = .Range(Left(q, Len(q) - 1))
            myRank = Application.WorksheetFunction.Rank(mCell, rngR, 1)
        End With
    End If
End Function


mCell  - ячейка с врем.
mRange  - диапазон с датами
mCond  - ячейка с датой для фильтра

как чисто формулами сделать - не знаю (возможно, что никак)
Изменено: Ivan.kh - 20.04.2019 20:57:28
 
спасибо Иван

Формулой не решаются такие проблемы?
если нет, то как пользоваться макросом?
 
Это не макрос - функция. Почитайте эту статью.
 
это формула, только пользовательская.
Скопируйте в обычный модуль и вызывайте как обычную формулу
Что аргументы значат - я написал.

Можно ли стандартными формулами сделать - не знаю, о чем написал выше
 
я понял

есть возможность добавить доп. столбцы с любыми вспомогательными расчетами...
это не поможет?
Изменено: DNC - 20.04.2019 21:14:57
 
DNC, так подойдет?
 
artyrH, наверное так будет корректнее =СЧЁТЕСЛИМН($A$1:$A$21;A2;$B$1:$B$21;"<"&B2)+1
я что-то в эту сторону совсем не смотрел... 8-0
Изменено: Ivan.kh - 20.04.2019 23:29:23
 
Ivan.kh, согласен. а так еще корректнее)
Код
=ЕСЛИ(ЕПУСТО(A2);"";формула)
 
artyrH, Ivan.kh спасибо
 
еще раз спасибо откликнувшимся.

ранг вычисляется, но я выявил один не очень приятный факт:

если в таблице есть два и более события, которые произошли в одно и тоже время, то формула им присваивает одинаковые ранги (чего хотелось-бы избежать)...
добавил еще один столбец с уникальным порядковым номером события и немного изменил формулу:
=ЕСЛИ(ЕПУСТО($A2);"";СЧЁТЕСЛИМН($B$2:$B$26;$B2;$C$2:$C$26;"<"&$C2;$A$2:$A$26;"<"&$A2)+СЧЁТЕСЛИМН($B$2:$B$26;$B2;$C$2:$C$26;$C2;$A$2:$A$26;"<"&$A2)+1)
добавленную часть формулы выделил жирным

Проблема решена, но если кто-либо знает более легкое решение - напишите пожалуйста
Изменено: DNC - 21.04.2019 15:01:41 (добавлен файл)
Страницы: 1
Наверх