當前位置: 妍妍網 > 辦公

FREQUENCY函式,還不會的請舉手

2024-06-06辦公

小夥伴們好啊,今天咱們分享FREQUENCY 函式的幾個典型用法。

這個函式用於計算數值在指定區間內的出現頻數,然後返回一個垂直陣列。

函式的常規用法是這樣的:

FREQUENCY(一組數值,指定的間隔值)

FREQUENCY函式將第一參數中的數值以第二參數指定的間隔進行分組,計算數值在各個區間內出現的頻數。最終返回的陣列中的元素會比間隔值的元素多一個,多出來的這個表示最高區間之上的數值個數。

咱們來舉個例子:

如下圖所示,要根據D列的條件,統計各個年齡段的人數。

首先在E列輸入間隔20、30、40

然後同時選中F3:F6,編輯列中輸入以下公式,按<Ctrl+Shift+Enter>組合鍵結束編輯。

=FREQUENCY(B2:B13,E3:E5)

註意,由於FREQUENCY函式返回的是陣列結果,因此在直接使用該函式時需要按<Ctrl+Shift+Enter>組合鍵結束編輯才能正常運算。

第二參數設定了3個間隔,結果返回了4個數位,最後這個數位,就是比最高的間隔值還要大一些的有多少。

接下來咱們再看看這個函式的其他典型用法:

1、計算連續簽到最多有幾天

如下圖所示,要統計每一行中連續簽到最多的天數。

I2單元格輸入以下公式,按<Ctrl+Shift+Enter>組合鍵結束編輯。

=MAX(FREQUENCY(IF(B2:H2>0,COLUMN(B:H)),IF(B2:H2=0,COLUMN(B:H))))

簡單說下公式的計算過程:

FREQUENCY函式的第1參數是下面這段內容:

IF(B2:H2>0,COLUMN(B:H))

如果B2:H2大於0,就返回對應的列號,否則返回邏輯值FALSE,結果是這樣的:

{FALSE,3,4,5,FALSE,7,8}

再來看FREQUENCY函式的第2參數:

IF(B2:H2=0,COLUMN(B:H))

如果B2:H2等於0,就返回對應的列號,否則返回邏輯值FALSE,結果是這樣的:

{2,FALSE,FALSE,FALSE,6,FALSE,FALSE}

這兩個參數是如何來計算的呢?

FREQUENCY函式能夠忽略陣列中的邏輯值,以未簽到對應的列號{2;6}為指定間隔值,統計簽到對應的列號{3;4;5;7;8}在各個分段中的數量,相當於分別統計在兩個未簽到列號之間有多少個簽到的列號,返回記憶體陣列結果為:

{0;3;2}

也就是小於等於2的有0個,小於等於6的有3個,大於6的有2個。

最後使用MAX函式從記憶體該陣列中提取出最大值。

如果你覺得這個公式計算過程不容易理解,可以先記住按條件統計頻率的模式化用法:

FREQUENCY(IF(符合條件,相應列號),IF(不符合統計,相應列號))

2、計算不重復下的第n個最大值

FREQUENCY函式還有一個特點,如果指定間隔中的數值有重復,會僅統計第一次出現時的間隔,後面重復出現的間隔值,計算結果會顯示為0。

並且第二參數不要求排序處理,函式會自動將各個間隔值按從小到大排序後計算對應的間隔數量,再將結果按原有順序分配到各個單元格。

利用這個特點,能夠計算不重復的第n個最大(最小)值。

如下圖所示,B列的考核有很多個重復分數,希望從中提取出不重復的第3個最高分。

公式為:

=LARGE(IF(FREQUENCY(B2:B10,B2:B10),B2:B10),3)

本例公式中,FREQUENCY的第1參數和第2參數相同,表示分別按B2:B10中的各個數值來對這個區域的數值進行分組統計,結果為:

{4;0;0;0;1;1;1;1;1;0}

也就是99及以上的有4個,97~99以下的有1個,95~97以下的有1個,85~95以下的有1個……

然後使用IF函式進行判斷,如果FREQUENCY的計算結果大於0,就返回B2:B10單元格區域中對應的數值,否則返回邏輯值FALSE。得到記憶體陣列結果為:

{99;FALSE;FALSE;FALSE;97;95;65;85;70;FALSE}

最後使用LARGE函式,忽略邏輯值從記憶體陣列中提取出第三個最大值。

好了,今天的內容就是這些吧,祝各位一天好心情。

練手檔:

https://pan.baidu.com/s/1o4Ac8uK0GQsNcYR5aZ48wg

提取碼: z4sg

圖文制作:祝洪忠