關於“滯箱費:=210*5=1050/元”這一字串(不含引號),現有兩個問題:
1、如何用excel函式求出最後一個“=”所處的位置?
2、如何求出最後一個單字元所處的位置?即“/”所在的位置?
3、如何求出最後一個數字型字元所處的位置?即0所在的位置?
回覆列表
-
1 # 套路Excel
-
2 # Excel到PowerBI
我是大海,微軟認證Excel專家,企業簽約Power BI顧問,喜歡研究Excel報表自動化問題。
通常來說,這個需求的目的是為了提取或分離其中的資料,並用於進行後續更多的資料處理和分析,因此,如果有條件,儘可能用Excel2016的新功能Power Query(Excel2010或Excel2013可到微軟官方下載相應的外掛)來實現整個資料處理過程的自動化。
回到這個具體問題,在Power Query裡實現起來,也更加簡單,一個函式搞定,而且不需要任何腦洞大開的套路。
1、函式法取最右側某字元的位置2、直接按最右側字元分列實際上,如果是為了按最右側字元進行分列,在Power Query裡是直接支援的。如下圖所示:
3、直接提取分隔符之間的文字如果需要直接提取最後的=和/之間的數字(1050),那在Power Query也是可以一步到位的,如下圖所示:
從上面可以看出,無論是哪一種場景,透過Excel的新功能Power Query來實現都非常的簡單方便,而且,最關鍵的是,如果後續還需要進行其他相關資料處理,那可以全部在Power Query裡一氣呵成地做,這樣在以後有新的資料進來後,可以一鍵重新整理即得最新資料處理結果,實現報表的自動化。
歡迎在評論中發表不同觀點,共同學習,一起進步。更多Excel文章配套材料下載PQ入門20篇:https://pan.baidu.com/s/1ITXFJF0eokdC2zKVJvkrhQPQ進階20篇:https://pan.baidu.com/s/1d1o_GfrmWFOp2tA8yhxe9APQ實戰20篇:https://pan.baidu.com/s/1EiDJPk57XtdH1x4SGd2UnQM函式基礎20篇:https://pan.baidu.com/s/1BWzQRI4dZPZacxP6LqRECQPQ動畫30+:https://pan.baidu.com/s/19jUxwhbdXw24OtkFyWNlewPP入門15篇:https://pan.baidu.com/s/1dZLjCRiQikYnyqLc-DWo_w資料透視11篇:https://pan.baidu.com/s/112OmlCU_o_upI5B3pTt4fg
問題1:如何用excel函式求出最後一個“=”所處的位置?
1、先將“=”都替換成100個空格,公式如下:
=SUBSTITUTE(E1,"=",REPT(" ",100))
2、用Right函式在 【1】生成的字元右邊提取100個字元。公式如下:
=RIGHT(SUBSTITUTE(E1,"=",REPT(" ",100)),100)
3、使用Trim函式去除【2】中字元的空格,得出初始字元最後一個“=”後邊的所有字元。公式如下:
=trim(RIGHT(SUBSTITUTE(E1,"=",REPT(" ",100)),100))
4、用len函式分別計算原始字元和【3】生成的字元的字元數,兩兩相減即可。
公式為:=LEN(E1)-LEN(TRIM(RIGHT(SUBSTITUTE(E1,"=",REPT(" ",100)),100)))
上述是利用字元拆分得出最後一個“=”的位置。
如果複雜點的可以使用下面公式:
=LOOKUP(1,0/(MID(E1,ROW(1:99),1)="="),ROW(1:99))
此公式若要解釋,則比較複雜,故簡要描述一下思路。
思路:
1、MID(E1,ROW(1:99),1)="="
將原始字串拆一個一個地拆解,一個一個和“=”比較,如果字元是“=”,則返回true,否則返回false;見下圖黑色部門公式:
2、0/(MID(E1,ROW(1:99),1)="=")
將0/true=0,0/false=#DIV/0!,見下圖黑色部分公式:
3、然後運用Lookup函式+row函式查詢最後一個0的位置,就是最後一個“=”的位置。
問題二:如何求出最後一個單字元所處的位置?即“/”所在的位置?
這個問題和【問題一】同樣的原理,如果字串中只有一個“/”,可以使用下面公式:
=FIND("/",E1,1)
如果有多個“/”則和問題一一樣的做法,故這裡不再重複說。
問題三:如何求出最後一個數字型字元所處的位置?即0所在的位置?
1、使用MID函式拆分原始字串中的每一個字元,公式為:=MID(E1,ROW(1:99),1),陣列公式。同樣使用F9運算公式,結果為下圖:
2、將【1】中的序列變成數字序列,公式為:=-MID(E1,ROW(1:99),1),陣列公式。同樣用F9運算公式結果,如下圖:
3、使用LOOKUP函式,和【問題一】中的LOOKUP函式同樣的道理,這裡不再重複說。
公式如下:
=LOOKUP(9^9,-MID(E1,ROW(1:99),1),ROW(1:99))
4、也可以使用此公式:=MATCH(4^8,--MID(E1,ROW($1:$99),1)),陣列公式。
其道理,基本和LOOKUP函式的一樣。