✔ 最佳答案
圖片參考:
http://home.pchome.com.tw/my/gtfi/1105070707856.gif
1. 先製作如圖的黃色區碼參考表2. 電話分解欄位:先把原電話號碼與區碼分解開來D2 儲存格公式:=IF(ISERROR(FIND(")",C2)),C2,MID(C2,FIND(")",C2)+1,99))公式意義:假如搜尋 ")" 字串為錯誤值(意即沒有輸入括弧的電話號碼),結果就是原來的電話;否則使用 MID 函數擷取")"之後的號碼,其中 99 表示可以共抓 99 個字元。公式完成之後,可以往下複製。3. 新的電話欄位:擷取住址的前兩個字,再使用 VLOOKUP函數查詢「區碼參考」表,得到新的電話,E2 儲存格公式=VLOOKUP(LEFT(B2,2),$G$2:$H$22,2,0)&D2公式完成之後,可以往下複製。下載範例檔案第二次補充:分析台灣地區電話號碼區碼之後的尾碼,不外乎 5、6、7、8區碼參考尾碼金門(0823)5苗栗(037)6台東(089)6桃園(03)7新竹(03)7宜蘭(03)7花蓮(03)7彰化(04)7南投(049)7雲林(05)7嘉義(05)7台南(06)7高雄(07)7花蓮(03)7屏東(08)7澎湖(06)7馬祖(08)7基隆(02)8台北(02)8台中(04)8因此乾脆不要考慮是否已經打區碼,直接抓取尾碼,再使用 VLOOKUP 加以查表。因此將 D2 公式改為:=IF(LEFT(B2,2)="金門",RIGHT(C2,5),IF(OR(LEFT(B2,2)="苗栗",LEFT(B2,2)="台東"),RIGHT(C2,6),IF(OR(LEFT(B2,2)="台北",LEFT(B2,2)="基隆",LEFT(B2,2)="台中"),RIGHT(C2,8),RIGHT(C2,7))))其他不變,完成~第三次補充:很感謝牧童提醒我,加上錯誤判斷,如果沒有輸入地址,那結果就讓它得到原來的電話號碼,因此得到公式如下:=IF(B2="",C2,IF(LEFT(B2,2)="金門",RIGHT(C2,5),IF(OR(LEFT(B2,2)="苗栗",LEFT(B2,2)="台東"),RIGHT(C2,6),IF(OR(LEFT(B2,2)="台北",LEFT(B2,2)="基隆",LEFT(B2,2)="台中"),RIGHT(C2,8),RIGHT(C2,7)))))第四次補充:再次回應你的問題,如果電話號碼缺碼,也就數字個數是小於 5 ,讓公式寫式 "不正確" 因此再把公式修改如下:=IF(B2="","",IF(LEN(C2)<5,"不正確",IF(LEFT(B2,2)="金門",RIGHT(C2,5),IF(OR(LEFT(B2,2)="苗栗",LEFT(B2,2)="台東"),RIGHT(C2,6),IF(OR(LEFT(B2,2)="台北",LEFT(B2,2)="基隆",LEFT(B2,2)="台中"),RIGHT(C2,8),RIGHT(C2,7))))))
2005-07-09 15:26:06 補充:
還有更好的解法,等我一下~
2005-07-09 15:57:12 補充:
如果地址開頭不是縣市,那麼就先排序,加以篩選出,然後已經有縣市的先套用公式。還沒有縣市的,一一補上,再套用公式。
要不,筆者我也投降囉~~
2005-07-09 16:00:58 補充:
如果電話號碼有空白字元,就先使用 TRIM 函數清除囉~
2005-07-11 04:11:27 補充:
把你的工作表欄位與公式貼上來,好讓筆者加以判斷哪裏造成了[循環參照]?
2005-07-11 19:15:48 補充:
欄位名稱提供一下唷
~~