最近在學習vba,所以更新的頻率較少。雖然在學習vba的道路上我現在還是一個沒有入門的小白,但多少還是有點收獲的。發現了兩個有用的自定義函數,可以實現textjoin和evaluate的效果。 textjoin這個函數不用說了,功能是很強大的,很多時候都會用到它,但低版本的微軟excel可能沒有這個函數,是一個遺憾。我知道在wps2019中有這個函數,用過的人肯定知道它的強大。 如果你平常工作用的是微軟excel,而里面又沒有textjoin,你就知道有多么痛苦了。我自己的電腦中裝的是2019版的excel,自帶textjoin,而且我也很喜歡用這個函數。用習慣了后,我也經常在公司的2016版excel中輸入textjoin,但輸入完我才發現沒有這個函數。瞬間感到無力,失落。不過發現了自定義函數能實現它的功能后,就感覺很爽了。 而evaluate這個函數功能也很強大,有時候會有一些妙用。但在微軟excel中是個宏表函數,要在定義名稱里才能使用,所以被很多人放棄或遺忘。而在wps2019中,它就能直接輸入使用?,F在有了能代替它的功能的自定義函數后,就能方便地利用它的功能了。 下面就來說說這兩個自定義函數,我把它們分別命名為MYTEXTJOIN和MYEVALUATE。 -01- MYTEXTJOIN 1.將相同部門的員工合并在一個單元格中 如下圖所示,左表是原表,實現的效果為右表。這個問題之前講textjoin時就說過,你如果對這個函數不熟悉或者沒有這個函數的話,可以先搜索之前的文章看看它的用法,等安裝完自定義函數,就可以動手試驗了?,F在用自定義函數寫的公式和textjoin是差不多的,在E3單元格輸入公式=MYTEXTJOIN("、",1,IF(A$3:A$11=D3,B$3:B$11,"")),按ctrl+shift+enter。 下面看下演示,當我輸入textj時,下面有textjoin和mytextjoin兩個函數。textjoin是excel自帶的,mytextjoin是我自定義的。總體來說和textjoin的功能差不多,但一些細節沒有textjoin完善。 自定義函數mytextjoin的功能和textjoin比還是有所欠缺的。第一,mytextjoin不能省略參數;第二,mytextjoin的第3參數和后面的參數只能是單元格引用或者數組,不能是單個數字或文本。 雖然mytextjoin有所欠缺,但在工作中不影響使用。第一,把參數輸入完整,不要省略就可以了;第二,工作中第3參數一般都是使用數組的,基本不會像我上面那樣寫1,2,3,4。 -02- MYEVALUATE 1.求算式的結果 如下圖所示,A列是一些算式,求它們的結果。如果用自定義函數myevaluate,直接在C15單元格輸入公式=MYEVALUATE(A15),下拉完成。如果要用excel自帶的evaluate,就要用到定義名稱。 下面演示一下,可以看到要把寫好的evaluate公式放到定義名稱中才能生效,否則在單元格輸入是不支持的。每次都要定義名稱挺麻煩的,而且還要考慮相對引用的問題。而用自定義函數myevaluate就沒有這個問題,直接在單元格輸入函數。 2.求每個單元格的數字之和 在B22單元格輸入公式=SUM(MYEVALUATE("{"&A22&"}")),下拉完成。myevaluate和evaluate的功能一樣,而且比evaluate更方便,如果你對evaluate了解的話,這個公式就不難理解。 簡單說一下它在這里的功能,evaluate可以計算文本算式的結果,如例1;還可以將文本的數組轉為常規的數組,比如將"{1,2,3,4}"轉為{1,2,3,4}。由于此例每個單元格都是逗號或分號分隔,左右連接花括號就變成文本型的數組,然后用myevaluate轉為常規數組,最后用sum求和。 -03- 自定義函數的安裝 說了這么多,那么這兩個自定義函數從哪來?怎么安裝?現在被我保存在一個文件中,就是下面紅框標記的那個文件,我會上傳到百度網盤中。 第1步,你先從網盤上把這個文件下載下來,保存到電腦里。 第2步,打開微軟excel,點開發工具,點excel加載項,彈出加載項對話框,可以看到我的自定義函數已經有了,因為我之前已經加載過了,你第一次點開的話可能是沒有的。要點瀏覽,然后找到你保存的那個文件,點確定。這下你的加載項應該就有了那個文件,勾選好后,點確定。 第3步,要關閉excel,重新打開或者新建一個工作簿自定義函數才會生效。輸入=my,看看這兩個函數有沒有出現。如果安裝不成功,可以留言。 鏈接: https://pan.baidu.com/s/14PTHuNstxhpSe6BUGvcOCA 提取碼:20h0 |
|