Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
salfa_an
New Member

How do I rank values within groups ignoring blanks/zero according to its returned sequence?

Here is my dummy table

ProductReturned SequenceNumberPriceRank wanted Rank
A1121400€1 1
A21500€   
A38920€   
A45630€   
A5892700€5 2
A58921000€5 2
A5892100€5 2
B1801100€1 1
B18015000€1 1
B26530€   
B3788300€3 2
B37880€   

 

I calculated the Rank Column with:

 

 

Rank = IF(Table1[Cost] <> 0, RANKX(FILTER(Table1, Table1[Product] = EARLIER(Table1[Product])), Table1[Returned Sequence],, ASC, Dense))


Is there any other formula/workaround to get the rank like in the wanted rank column? Thank you!

1 ACCEPTED SOLUTION
OwenAuger
Super User
Super User

Hi @salfa_an 

Here are a couple of options:

 

1. Modify your original expression to ensure Cost <> 0 within FILTER:

Rank 2 =
IF (
    Table1[Cost] <> 0,
    RANKX (
        FILTER (
            Table1,
            Table1[Product]
                = EARLIER ( Table1[Product] )
                && Table1[Cost] <> 0
        ),
        Table1[Returned Sequence],
        ,
        ASC,
        DENSE
    )
)

 2. Rank over a table of distinct values of Returned Sequence, created using CALCULATETABLE:

Rank 3 = 
IF (
    Table1[Cost] <> 0,
    VAR RankingTable =
        CALCULATETABLE (
            VALUES ( Table1[Returned Sequence] ),
            ALLEXCEPT ( Table1, Table1[Product] ),
            Table1[Cost] <> 0
        )
    RETURN
        RANKX (
            RankingTable,
            Table1[Returned Sequence],
            ,
            ASC
        )
    )

 

Do these work for you?

Regards


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

View solution in original post

2 REPLIES 2
OwenAuger
Super User
Super User

Hi @salfa_an 

Here are a couple of options:

 

1. Modify your original expression to ensure Cost <> 0 within FILTER:

Rank 2 =
IF (
    Table1[Cost] <> 0,
    RANKX (
        FILTER (
            Table1,
            Table1[Product]
                = EARLIER ( Table1[Product] )
                && Table1[Cost] <> 0
        ),
        Table1[Returned Sequence],
        ,
        ASC,
        DENSE
    )
)

 2. Rank over a table of distinct values of Returned Sequence, created using CALCULATETABLE:

Rank 3 = 
IF (
    Table1[Cost] <> 0,
    VAR RankingTable =
        CALCULATETABLE (
            VALUES ( Table1[Returned Sequence] ),
            ALLEXCEPT ( Table1, Table1[Product] ),
            Table1[Cost] <> 0
        )
    RETURN
        RANKX (
            RankingTable,
            Table1[Returned Sequence],
            ,
            ASC
        )
    )

 

Do these work for you?

Regards


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

Hi @OwenAuger 
i tried your first solution and it works. thank you so much

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.