我有一个问题,我正在尝试做RankIfs和Rank,同时返回唯一的排名而不是重复,而所有这些都没有排序我的数据。我将提供一份我目前正在下面的样本。我很乐意无论如何都可以解决这个问题,无论是VBA还是Formula's。但是我目前有许多数据表正在使用Sumproducts,我现在正试图避免使用该功能,因为它非常繁重。
Category | Total Value | Rank | Unique ID
lkj | 494.1 | 2 | lkj2
asdf | 679.6 | 1 | asdf1
lkj | 494.1 | 2 | lkj2
tdd | 110.5 | 2 | tdd2
tdd | 120.5 | 1 | tdd1
lkj | 800.5 | 1 | lkj1
A B C D
1 Category | Total Value | Rank | Unique ID
2 FX | 494.1 | 2 | FX2
3 FX | 679.6 | 1 | FX1
4 FX | 494.1 | 2 | FX2
5 FX | 110.5 | 4 | FX4
所以第一个例子是我尝试做RankIfs的地方。总值的列引用原始数据表。我知道我可以将排名和总价值合并为一列,但是例如我认为更容易解释我所指的是将所有内容都列出来。
第二个问题是,在我的第二个表格中,我遇到的问题是有时总价值将完全相同,我只需要将其中一个FX排在第3位。我现在正在做的事情是回去在手动调整这个,并且有很多数据表我必须做的排名,你可以想象这可能会非常繁重。我觉得可以实现自动化的许多手工工作并不困难。
无论如何,我无法想到在函数或VBA中解决这个问题。我唯一能想到的是将所有内容排序,然后按照下面的示例排序。
A B C D
1 Category | Total Value | Rank | Unique ID
2 FX | 679.6 | 1 | FX1
3 FX | 494.1 | 2 | FX2
4 FX | 494.1 | 2 | FX2
5 FX | 110.5 | 4 | FX4
然后有一个公式或vba解决方案,它看着D2并说如果上面的单元格等于D2然后给我C1 + 1,否则给我C1。这一切都很重要,一旦它循环并得到D4,因为D3确实等于D4。这个解决方案对我来说似乎非常陈旧,但是如果没有更好的方法可以做到这一点,那么我只会记录宏。
非常感谢任何见解。
谢谢,
答案 0 :(得分:0)
如果您正在寻找从排名中获取唯一值的方法,则以下函数将执行此操作:
=RANK(B2,$B$2:$B$10)+COUNTIF($B$2:B2,B2)-1
由于countif只计算其上方行中的值,因此使用给定值找到的第一个值将具有更高的排名。
我真的不明白你对排名的看法,如果是的话,我不会试着回答这个问题。