久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 軟件教程 > Excel教程 >

如何使用Contxt自定義函數

來源:技術員聯盟┆發布時間:2018-02-04 00:00┆點擊:

  今天我們聊一聊“一勺匯”的終極殺手——將符合條件的多個結果合并到一個單元格內的自定義函數:Contxt函數。

  先說下啥是自定義函數,度娘是這么說的:

  用戶自定義函數是指如果要在公式或計算中使用特別復雜的計算,而工作表函數又無法滿足需要,則需要創建用戶自定義函數。這些函數,稱為用戶自定義函數,可以通過使用 Visual Basic for Applications 來創建。

  看起來很復雜的說,其實就是用VBA代碼寫個函數。

  當然嘍,我們今天聊的不是VBA代碼,而是自定義函數Contxt。——我們不需要知道Contxt的VBA代碼是怎么寫的,只需要知道Contxt是怎么用就好了。

  這就好比,我們想吃塊豬肉,還需要去養豬嗎?不需要的,去菜市場買點來炒就好了。

  今天我們就是去菜市場,買個Contxt帶回家用用。

  還是先來看一道題,如下圖所示,基礎數據是某個學院某些人的性別以及考試成績的信息(數據純屬虛擬,如有雷同,那是逆天)。

如何使用Contxt自定義函數   三聯

  現在老板發話咧,讓你統計一份不及格人員的名單,按性別和課類進行統計,統計的結果每個人名之間以空格間隔,結果參照下方所示。

  ——統計你妹,老板你到底懂不懂Excel啊,你這不符合數據規范……,你心里默默的念叨這么一句,然后該干什么還得干什么,苦悶到天亮。

  而如果你知道自定義函數Contxt,則可以瞬間秒殺此類問題。

  Contxt函數的功能其實就是一個高級的連接符,可以快捷將參數值捏合成一個字符串。除了錯誤值,啥都能接受并處理。

  比如:

  =Contxt(1,2,3)

  得到:123

  =Contxt(2013,"應用大全","火熱上市啦!")

  得到:2013應用大全火熱上市啦!

  =Contxt(A2:A3&",")

  數組運算后得到:祝洪忠,星光,

  以上述圖片問題為例,我們在B13輸入以下數組公式,按組合鍵結束輸入,并復制填充到B13:C14區域,即可得出最終結果。

  =Contxt(IF(($B$2:$B$9=$A13)*(C$2:C$9<60),$A$2:$A$9&" ",""))

  說說這個公式的意思:

  IF(($B$2:$B$9=$A13)*(C$2:C$9<60),$A$2:$A$9&" ","")部分,是Contxt需要合并成一個字符串的數據。

  IF函數首先判斷B2:B9的值是否等于A13(男),再判斷C2:C9的值是否小于60(不及格),如果兩個條件同時成立,返回A列姓名連接上空格,否則返回假空。

  于是得到一個內存數組:

  {"";"星光 ";"";"";"";"";"郭輝 ";""}

  最后使用Contxt將IF函數的結果合并為一個字符串,得到最終結果:

  星光 郭輝

  瞧瞧,Contxt處理起“一勺匯”來,是不是很方便?!

  上面我們說了Contxt怎么用,下面我們來說下怎么去菜市場買個Contxt帶回家。

  1、打開VBE窗口

  右鍵單擊任意工作表標簽,在彈出的快捷菜單中選擇【查看代碼】命令。

Contxt自定義函數的用法

  2、插入模塊

  在已打開的VBE窗口中,右鍵單擊【工程資源管理器】任意處,在彈出的快捷菜單中,依次單擊【插入】——【模塊】

Contxt自定義函數的用法

  3、復制粘貼代碼

  將以下代碼復制粘貼到已激活模塊的代碼窗口中。

  PubliC FunCtion Contxt(ParamArray args() As Variant) As Variant

  Dim tmptext As Variant, i As Variant, Cellv As Variant

  Dim Cell As Range

  tmptext = ""

  For i = 0 To UBound(args)

  If Not IsMissing(args(i)) Then

  SeleCt Case TypeName(args(i))

  Case "Range"

  For EaCh Cell In args(i)

  tmptext = tmptext & Cell

  Next Cell

  Case "Variant()"

  For EaCh Cellv In args(i)

  tmptext = tmptext & Cellv

  Next Cellv

  Case Else

  tmptext = tmptext & args(i)

  End SeleCt

  End If

  Next i

  ConTxt = tmptext

  End FunCtion

Contxt自定義函數的用法

  如此,我們就成功的將Contxt函數帶回家了,趕緊打發它去做點事吧。