接著來說文本函數,今天講2個可以互轉的函數,那就是char和code。char函數返回對應于數字代碼的字符。code函數返回文本字符串中第一個字符的數字代碼。 可以簡單理解為:在excel中,一個數字代碼對應一個字符。比如數字代碼10對應的字符為換行符。我們常看到的char(10)就是用char返回數字代碼10對應的字符,也就是換行符。 而code函數是返回文字字符串中第一個字符的數字代碼。如code("愛你")返回的就是“愛”對應的數字代碼45230。你寫個char(45230)就返回“愛”。 -01- 函數說明 CHAR 函數語法如下,只有一個參數: CHAR(number) Number 必需。 介于 1 到 255 之間的數字,指定所需的字符。 使用的是當前計算機字符集中的字符。盡管官方說明是1到255的數字,實際上不止。而且還支持數組。 -02- 示例解釋 下面是數字代碼對應的字符,我截了3張圖,給你參考下,你可以自己測試下。 -03- 具體應用 1.將一行轉為多行多列 要將第1行的“我要學函數!”轉化成下面多行多列的表格。之前我們說過單列轉多行多列,用的是indirect這個函數。現在這個也是用indirect。首先要像最下面的表格一樣,把單元格地址寫出來。 我們發(fā)現它的字母都不一樣,該怎么樣用函數實現這樣的單元格地址呢?這就用到char和code,我們知道每個字符都有1個數字代碼,先用code查找A的數字代碼發(fā)現是65。B是66,C是67,。。。這樣就可以轉化為下表。 這樣是不是就和以前的單列轉多行多列差不多了,用row和column構建這樣的數字。在任意空白單元格輸入公式=COLUMN(A1)+64+ROW(A1)*3-3,向右向下拖動,就構建出上面的數字。 再用char轉化為對應的字符,公式為=CHAR(COLUMN(A1)+64+ROW(A1)*3-3)。如下圖。 再&1,最后套個indirect結果就出來了,如下圖。公式為=INDIRECT(CHAR(COLUMN(A1)+64+ROW(A1)*3-3)&1)。 如果你對這個不熟悉,請看之前的indirect的那篇文章。用慣了之后你就會喜歡的indirect函數 2.計算一個單元格中不重復字符的個數。 A列中是一些字符串,如果有的字符重復出現,只算做1個。比如第一個abcd出現2次,最后只算做4個字符。 現在我給出2種解法,第一種公式比較長,在B13單元格中輸入公式=SUM(N(FIND(MID(A13,ROW(INDIRECT("1:"&LEN(A13))),1),A13)=ROW(INDIRECT("1:"&LEN(A13))))),按ctrl+shift+enter三鍵,向下拖動。這個公式我就不講解了。 第2種用char函數,公式也短。在C13單元格中輸入公式=COUNT(FIND(CHAR(ROW(A:A)),A13)),同樣按ctrl+shift+enter三鍵,向下拖動。 ROW(A:A)是A列中所有的行號,CHAR(ROW(A:A))是將A列中所有的行號返回對應的字符,這些字符都是唯一的,也就是不會重復出現的,并且包括所有的字符。 FIND(CHAR(ROW(A:A)),A13)是在A13單元格中找上面的那些字符,找到的返回1個數字,找不到的返回錯誤值。COUNT(FIND(CHAR(ROW(A:A)),A13))是統計數字的個數,數字的個數就是要算的不重復的個數。 關于code的用法我這里就不再講了,會用char就會用code。好了,今天的2個函數就講到這里,你學會了嗎? |
|