日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

34、Power Query-中国式排名

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 34、Power Query-中国式排名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節要點:Power Query-中國式排名

何謂“中國式排名”呢?

在排名計算方法中,中國人的習慣是,無論有幾個并列第2名,之后的排名仍應該是第3名,即并列排名不占用名次。
例如:對數列{3,2,2,1}從大到小進行排名,按國際通行的慣例是{第一名,第二名,第二名,第四名},

比如奧運會某場比賽出現并列銀牌,則不發銅牌,

而按中國式排名,結果是{第一名,第二名,第二名,第三名}。

下面通過一個案例來簡單的說明如何通過Power Query來做這個“中國式排名”。


從上圖可以看出,我們想要的結果是庫里第一名,陶波依和張大杰是并列第二名,而休閑海則是第三名(要是美式排名,則是第四名)。

我們首先來分析一下,如何進行簡單快速的對比,得出名次。



我們首先將所有數據列的數據復制出來,刪除重復行。

然后依次將每一行的數據同上面的結果相比較。

如果小于等于上面的,則為“TRUE”,否則為“FALSE”。

最后統計“TRUE”的數量,則為名次。

例如上圖中的休閑海小朋友,統計出來三個“TRUE”,則為第三名。

下面我們就在Power Query里面實現這個邏輯。


準備好數據,上面一個表“排名”則是數據源,下面一個表“不重復”則是根據數據源刪除了重復項的表。

下面要在“排名”表里面進行擴展,每一行都要擴展8行記錄,為什么呢?

因為上面不重復的有8條記錄啊,哈哈!


這里用之前學到的擴展列技術。


但是這里有一個問題,假如我們的數據在增加,要是有10個不重復怎么辦呢,還是得需要函數來動態輔助。


復制這個“值計數”的代碼,進行替換。

{1..List.NonNullCount(不重復[分數])}

下面如何將“不重復”表里面的記錄挪到“排名”表里面進行比較呢?這個簡單了,其實就是在“不重復”表里面加一列索引,然后合并即可。



我們這里有一個小竅門,就是在“排名”表里面加一列索引列,“從1”開始的索引,這樣一來,這個表的順序就不容易被打亂。

展開分數一列即可,開始進行比較。



下面我們對于上面的結果做一個計數就可以得到排名了。


為了一步到位,我們可以對“分數”列取平均值,依舊是原來的分數,下面統計1的個數,即名次。


很不幸,發生了錯誤。

Expression.Error: 無法將運算符 - 應用于類型 Text 和 Text。 詳細信息:Operator=-Left=1Right=1
這是由于我們“求和'一列是文本類型,改成數值型即可。


這樣就可以了,然后改一下前后綴。

上載到當前工作簿,為了不在刷新的時候自動調整格式,建議大家在屬性里面去掉”調整列寬“。


新增一個小家伙,我們看看名次會不會進行刷新?


妥妥的啊,中國式排名!


總結

以上是生活随笔為你收集整理的34、Power Query-中国式排名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。