Страницы: 1
RSS
Ранг с условием, Проранжировать внутри клиентов
 
Коллеги, привет

Помогите написать формулу для ранжирования внутри каждого клиента при условии, что таких клиентов может быть 100, а не 2 как в примере
 
Добрый день!
Установите фильтр и сортируйте вначале по Штукам, потом по Клиенту, или воспользуйтесь Настраиваемой сортировкой, только тут наоборот вначале по клиенту, потом по штукам
Изменено: Msi2102 - 16.06.2025 17:22:14
 
Вариант:
=СОРТПО(A2:B15;A2:A15;1;B2:B15;1)
 
Код
Sub КапПерРанг()
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    
    With ActiveSheet.UsedRange
        Dim ya As Long, arr As Variant, brr As Variant
        arr = .Columns(1).Resize(, 2).Value
        For ya = 2 To UBound(arr, 1)
            If Not dic.Exists(arr(ya, 1)) Then
                Set dic(arr(ya, 1)) = CreateObject("Scripting.Dictionary")
            End If
            dic(arr(ya, 1))(.Cells(ya, 2).Value) = Empty
        Next
        
        For ya = 2 To UBound(arr, 1)
             brr = dic(arr(ya, 1)).keys()
             .Cells(ya, 4).Resize(1, UBound(brr) + 1).Value = brr
            .Cells(ya, 3).FormulaR1C1 = "=RANK(RC[-1],RC[1]:RC[" & UBound(brr) + 1 & "])"
        Next
        
    End With
    
End Sub
 
Здравствуйте!
Можно посмотреть вариант
 
Спасибо, но это не совсем то

Мне вот так надо, из ваших ответов, такое не получается сделать  
 
Salvator,
pq
если порядок необходимо сохранить как во втором примере
pq_v2
Изменено: Ma_Ri - 17.06.2025 13:39:30
 
Здравствуйте.
Если клиенты сгруппированы как в примере, то можно такой формулой
Код
=РАНГ(B2;ИНДЕКС($B$1:$B$30;ПОИСКПОЗ($A2;$A$1:$A$30;)):ИНДЕКС($B$1:$B$30;ПОИСКПОЗ($A2;$A$1:$A$30;)+СЧЁТЕСЛИ($A$1:$A$30;$A2)-1);)
 
Цитата
написал:
но это не совсем то... такое не получается сделать
Вариант в сообщении #4 выдаёт "совсем то".
 
Если клиенты сгруппированы, то можно таким макросов вставить формулу РАНГ()

Скрытый текст

Если не сгруппированы
то таким по возрастанию
Скрытый текст

А таким по убыванию
Скрытый текст
Изменено: Msi2102 - 17.06.2025 15:25:53
 
Всем спасибо!
Вы лучшие! Просто космос!
 
вариант:
=СЧЁТЕСЛИМН(A:A;A2;B:B;">"&B2)+СЧЁТЕСЛИМН(A$2:A2;A2;B$2:B2;B2)
Страницы: 1
Читают тему
Наверх