小伙伴,請看下面的截圖:左邊是組別、姓名。我們希望通過EXCEL實現(xiàn)右邊的效果。
先別往下面看喲!思考兩分鐘,你平時接觸到的EXCEL函數(shù)能實現(xiàn)嗎?
小奇老師給大家分享的是使用自定義函數(shù)JOINIF函數(shù),來按條件連接文本。 下面就一起學習處理字符串的自定義函數(shù)——JOINIF函數(shù),先認識一下:函數(shù)名:JOINIF作用:對參數(shù)范圍中符合指定條件的單元格內(nèi)容進行連接。參數(shù)介紹:第一參數(shù):(必須)條件區(qū)域,根據(jù)條件計算的單元格區(qū)域。第二參數(shù):(必須)用于確定連接的條件。第三參數(shù):(必須)要連接的實際單元格區(qū)域。 通過上面的介紹,我們不難看出,JOINIF函數(shù)和SUMIF函數(shù)極其相似,只是功能上由求和變成了連接文本。 下面我們通過一個例子:如下圖,A、B列為數(shù)據(jù)源,分別為組別和姓名,目標是組織成D、E列的格式:解決方法: 一、創(chuàng)建自定義函數(shù): 1、新建一個EXCEL文檔,只保留一個工作表,其余刪除。按ALT+F11,打開VBE編輯器,新建一個模塊,把下面的自定義函數(shù)代碼復制到模塊中,關閉VBE編輯器。Function JOINIF(Rng1 As Range, Str, Rng2 As Range) Dim Arr, Brr Dim i As Long Dim j As Long Dim MyStr As String If Rng1.Rows.Count > 65536 Then Arr = Rng1.Resize(65536, Rng1.Columns) Brr = Rng2.Resize(65536, Rng1.Columns) Else Arr = Rng1 Brr = Rng2 End If
For i = 1 To UBound(Arr) For j = 1 To UBound(Arr, 2) If Arr(i, j) <> "" Then If Arr(i, j) = Str Then MyStr = MyStr & Brr(i, j) & "," End If Else Exit For End If Next j Next i JOINIF = Left(MyStr, Len(MyStr) – 1)End Function 2、點擊【文件】【另存為】,文件保存類型選擇“Excel加載宏”。它將自動存入ADDIN文件夾中。 3、從要使用此函數(shù)的EXCEL文件的【開發(fā)工具】-【加載宏】中勾選所保存的宏文件名,確定。就可以在工作表中的隨心所欲的使用自定義的按條件連接文本函數(shù)啦。 4、看一下使用效果,是不是很酷呢?