34、Power Query-中国式排名
本節(jié)要點(diǎn):Power Query-中國(guó)式排名
何謂“中國(guó)式排名”呢?
在排名計(jì)算方法中,中國(guó)人的習(xí)慣是,無論有幾個(gè)并列第2名,之后的排名仍應(yīng)該是第3名,即并列排名不占用名次。
例如:對(duì)數(shù)列{3,2,2,1}從大到小進(jìn)行排名,按國(guó)際通行的慣例是{第一名,第二名,第二名,第四名},
比如奧運(yùn)會(huì)某場(chǎng)比賽出現(xiàn)并列銀牌,則不發(fā)銅牌,
而按中國(guó)式排名,結(jié)果是{第一名,第二名,第二名,第三名}。
下面通過一個(gè)案例來簡(jiǎn)單的說明如何通過Power Query來做這個(gè)“中國(guó)式排名”。
從上圖可以看出,我們想要的結(jié)果是庫(kù)里第一名,陶波依和張大杰是并列第二名,而休閑海則是第三名(要是美式排名,則是第四名)。
我們首先來分析一下,如何進(jìn)行簡(jiǎn)單快速的對(duì)比,得出名次。
我們首先將所有數(shù)據(jù)列的數(shù)據(jù)復(fù)制出來,刪除重復(fù)行。
然后依次將每一行的數(shù)據(jù)同上面的結(jié)果相比較。
如果小于等于上面的,則為“TRUE”,否則為“FALSE”。
最后統(tǒng)計(jì)“TRUE”的數(shù)量,則為名次。
例如上圖中的休閑海小朋友,統(tǒng)計(jì)出來三個(gè)“TRUE”,則為第三名。
下面我們就在Power Query里面實(shí)現(xiàn)這個(gè)邏輯。
準(zhǔn)備好數(shù)據(jù),上面一個(gè)表“排名”則是數(shù)據(jù)源,下面一個(gè)表“不重復(fù)”則是根據(jù)數(shù)據(jù)源刪除了重復(fù)項(xiàng)的表。
下面要在“排名”表里面進(jìn)行擴(kuò)展,每一行都要擴(kuò)展8行記錄,為什么呢?
因?yàn)樯厦娌恢貜?fù)的有8條記錄啊,哈哈!
這里用之前學(xué)到的擴(kuò)展列技術(shù)。
但是這里有一個(gè)問題,假如我們的數(shù)據(jù)在增加,要是有10個(gè)不重復(fù)怎么辦呢,還是得需要函數(shù)來動(dòng)態(tài)輔助。
復(fù)制這個(gè)“值計(jì)數(shù)”的代碼,進(jìn)行替換。
“{1..List.NonNullCount(不重復(fù)[分?jǐn)?shù)])}”
下面如何將“不重復(fù)”表里面的記錄挪到“排名”表里面進(jìn)行比較呢?這個(gè)簡(jiǎn)單了,其實(shí)就是在“不重復(fù)”表里面加一列索引,然后合并即可。
我們這里有一個(gè)小竅門,就是在“排名”表里面加一列索引列,“從1”開始的索引,這樣一來,這個(gè)表的順序就不容易被打亂。
展開分?jǐn)?shù)一列即可,開始進(jìn)行比較。
下面我們對(duì)于上面的結(jié)果做一個(gè)計(jì)數(shù)就可以得到排名了。
為了一步到位,我們可以對(duì)“分?jǐn)?shù)”列取平均值,依舊是原來的分?jǐn)?shù),下面統(tǒng)計(jì)1的個(gè)數(shù),即名次。
很不幸,發(fā)生了錯(cuò)誤。
Expression.Error: 無法將運(yùn)算符 - 應(yīng)用于類型 Text 和 Text。 詳細(xì)信息:Operator=-Left=1Right=1這是由于我們“求和'一列是文本類型,改成數(shù)值型即可。
這樣就可以了,然后改一下前后綴。
上載到當(dāng)前工作簿,為了不在刷新的時(shí)候自動(dòng)調(diào)整格式,建議大家在屬性里面去掉”調(diào)整列寬“。
新增一個(gè)小家伙,我們看看名次會(huì)不會(huì)進(jìn)行刷新?
妥妥的啊,中國(guó)式排名!
總結(jié)
以上是生活随笔為你收集整理的34、Power Query-中国式排名的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 33、Power Query-统计员工完
- 下一篇: 35、Power Query-分组中国式