Board logo

標題: [發問] 擷取部分字元 [打印本頁]

作者: shootingstar    時間: 2013-4-3 11:38     標題: 擷取部分字元

如果我在A1欄有:學校地址:407 台中市西屯區文華路100號
我要如何在B1欄取出"407"、C1欄取"出台中市西屯區"
謝謝!
作者: Bodhidharma    時間: 2013-4-3 12:50

回復 1# shootingstar

基本上就是用mid函數,不過要看資料的格式
如果全部的格式都是"學校地址:xxx xxxxx區xxxxxxxxx"的話就可用
B1=mid(A1,6,3)
C1=mid(A1,10,6)
如果格式字數不一樣,或是想要抓的東西不一樣(郵遞區號是否都是三碼?區域要抓到鄉?鎮?區?),就必需另外設計
可參考
http://office.microsoft.com/zh-tw/excel-help/HA010102341.aspx
作者: shootingstar    時間: 2013-4-3 15:47

回復 2# Bodhidharma


    謝謝Bodhidharma 的回答,我也是用MID函數取得我要的資訊,以下是我自己寫的函數,有點冗長,不過約8成以上可以達成目標
    B1=MID(A1,FIND(":",A1)+1,3)
    C1==MID(A1,MAX(IF(ISERR(FIND({"縣","市"},A1)),0,FIND({"縣","市"},A1)))-2,3)&MID(A1,MAX(IF(ISERR(FIND({"鄉","鎮","市","區","村"},A1)),0,FIND({"鄉","鎮","市","區","村"},A)))-2,3)
   C1的函數幾乎可以達成我的需求,可是如果我的A1欄是只有"學校地址:"或是"學校地址:407 台中市文華路100號"就會出現#VALUE!的錯誤訊息,有法可解嗎?謝謝。
作者: Bodhidharma    時間: 2013-4-4 01:03

回復  Bodhidharma


    謝謝Bodhidharma 的回答,我也是用MID函數取得我要的資訊,以下是我自己寫的函 ...
shootingstar 發表於 2013-4-3 15:47


用你的公式試了一些地址:
學校地址:407 台中市西屯區文華路100號        407        台中市西屯區
學校地址:407 台中市文華路100號        407        台中市台中市
學校地址:                #VALUE!
學校地址:123 桃園縣中壢市xx路xx號        123        中壢市中壢市

有幾個問題:
#VALUE!部分:
從「公式→評估值公式」中追蹤,可以看出因為「縣」和「市」都找不到,因此回傳0,0還要減2出現負值就會有問題,解決方法可以再加一個iserror:if(iserror(原公式),"",原公式)
note: excel2007後有iferror公式,可以用iferror(原公式,"")即可
「市」重複出現的問題:
因為有時候市是在前面(如:新北市xxx),有時候在後面(如:桃園縣中壢市)出現
因此有出現市的時候,公式就會出問題(重複找)
解決方法應該很多種
比方說
若"縣"存在,查鄉鎮市區村
若"市"存在,查鄉鎮區村
作者: Hsieh    時間: 2013-4-4 10:51

回復 3# shootingstar
試試附檔
[attach]14534[/attach]
作者: shootingstar    時間: 2013-4-5 10:00

回復 5# Hsieh


    謝謝Hsieh的回覆,如果沒有B1郵遞區號這一欄,公式要如何修改?謝謝。
作者: Hsieh    時間: 2013-4-5 15:16

回復 6# shootingstar
通常公式中參照到的位址,直接將該參照公式取代即可
但是,因為公式長度限制會造成無法直接將公式帶入
這時就將該參照的公式寫成定義名稱來帶入即可

[attach]14542[/attach]
作者: ML089    時間: 2013-4-8 15:54

回復 6# shootingstar

取區域號碼
B1 =IF(COUNT(-MID(A1,7,1)),-LOOKUP(,-MID(A1,6,{1,2,3})),"")

取地址前段
C1 =SUBSTITUTE(MID(A1,6,-5-LOOKUP(,-FIND({"縣","鄉","鎮","市","區","村","里"},A1))),B1,)
作者: Hsieh    時間: 2013-4-8 16:36

回復 8# ML089
地址前綴字元不確定長度會出錯

[attach]14583[/attach]
作者: ML089    時間: 2013-4-8 17:43

回復 9# Hsieh


    取郵遞區號以 ":" 為分界
=IF(COUNT(-MID(A2,FIND(":",A2)+1,1)),-LOOKUP(,-MID(A2,FIND(":",A2)+1,{1,2,3})),"")

取地址前段
參考 超版的公式 為佳




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)