前幾天有學員問了一個問題,如果他的單元格中包含某些字元,那麼在最後一列中就顯示有用,否則顯示不可用。如下:
當含有carpet時,最後一列中顯示有用。
其實,這個函式非常簡單,既然是查詢某個字元,直接用FIND函式就可以了,然後搭配著IF函式進行判斷,結果不就出來了麼?
有了這個思路,來看一下另外一個同學碰到的問題,看看該如何解決?表格是這樣的:
她的問題是這樣的:如果有4個連續的衣服碼都有庫存,那麼就在最後一列中標註為齊碼,否則就為斷碼。比如第2行中的T101031,根據上述說明,結果應該是斷碼;第3行中的結果就是齊碼;
先來分析一下思路,這個題跟開始的那個有點不一樣,應該可以說是升級版。
怎麼去判斷是連續的呢?我們用1表示有,用0表示無,假設將一行中的碼數全部連線在一起,只要遇到了“1111”這種四個1在一起的,那麼不就是說明這件款式是齊碼的麼!
根據上述這個思路,得出:
1、先判斷庫存情況,大於0的轉換成1,0的保持不變;
2、將1中的判斷情況連線在一起成為文字串;
3、判斷有沒有“1111”這種情況;
4、根據第3條得出是否是斷碼或齊碼的結果
一起來分步驟寫一下公式:
轉換為1和0,肯定是IF函數了:
這個利用了陣列公式的特性,所以得出的結果是一組資料:
將這些結果連成一串的函式就比較多了,都分享一下吧:
第一個:Microsoft365中的Textjoin函式
公式為:
=TEXTJOIN("",1,IF(B2:G2<>0,1,0))
第一個引數是分隔符的意思,第二個引數是是否忽略空值,第三個引數自然就是要連線的文字了;
缺陷:只有Microsoft 365, Office2019,WPS2019中才有這個函式;
如果不是上述這些版本怎麼辦?接下來看:
第二個:CONCAT函式
公式為:
=CONCAT(IF(B2:G2<>0,1,0))
引數雖然比Textjoin簡單得多,但是如果之間要有連線符的話,還是得用Textjoin。
其實關於連線文字的函式,除了上述兩個之外,還有Phonetic函式,它只對文字起作用;Concatenate函式,還有&符號,只是由於本題的限制,這三個都用不上,大家作為了解就好。
接下來,就是判斷是否有連續的庫存了。這個直接用FIND函式搞定。
公式為:
FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))
這種結果說明沒找到,把公式下拉填充一下看看。
很明顯,能得到結果的,就表示有連續的4個1,結果就應該是齊碼。但是這裡直接巢狀IF函式並不能得到我們要的結果,因為IF的判斷條件值的結果應該是True或False,所以這一步還需要套一個函式ISERROR直接做判斷:
有了結果True和False,最後再用IF函式巢狀就簡單多了。
公式為:
=IF(ISERROR(FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))),"斷碼","齊碼")