各位好,我想請問有關Excel的取代或者語法功能
假設說我只需要在某格內「只取代開頭幾個字元」能怎麼做呢?
主要會需要這功能是因為電話資料有過多的【886912345678】這類格式的電話出現
如果說只取代886為0那當然是沒問題,但會不小心取代到某些電話剛好中間也穿插了886的號碼
我也試過=left和=right的組合,但因為不能隨便改變表格順序,還有就是0開頭和886開頭的電話號碼也太過隨機,甚至有很多資料是兩隻以上電話放在同一格資料內,導致就算=left或=right也非常不好用
雖然不能亂排序可以用篩選達成,但是超過16或20碼的電話又構成了另外一種困擾
所以想請問版大有沒有推薦可以用VBA或者更聰明的取代方法
把「『886』912『886』678」這類電話資料的「只有開頭的886」給刪除掉
有簡單的辦法嗎?還是只有用VBA才能簡單解決?
另外想請問一個用「??」來搜尋的問題
原本我想利用「8869????????」來找到資料並取代掉【8869】成【09】
但發現取代結果會讓資料真的變成「09????????」OTZ
求指教
感謝!!
稻草人到處草人 wrote:
但因為不能隨便改變表格順序
其實有點不懂:是怎樣改變表格順序?(應該不至於吧?)
稻草人到處草人 wrote:
「只有開頭的886」
您用left(儲存格,3),就可以確實撈到「開頭」,而不會是中間的啊?
然後搭配if來做判斷,比如:
=if(left(儲存格,3)="886","0" & mid(儲存格,4,len(儲存格)-3),儲存格)
就可以解決開頭是886的問題啊
稻草人到處草人 wrote:
但是超過16或20碼的電話又構成了另外一種困擾
這?基本上您能找出規律的話,應該都可以解決。沒規律,別人可能也不大清楚怎麼下手(全部只取前N碼數字?)。
或許您可以post個檔案,裡面放個幾筆您遇到的特殊例子,希望達成的結果......(為個資問題,可以把中間數字隨便換一下).......版上的大神們應該可以很輕鬆的幫您找到解決方法(不管是函數或用VBA)
您研究看看。不能解決的就再提出來喔。
Der,misser1
misser wrote:
其實有點不懂:是怎樣(恕刪)
感謝,因為資料量實在太大,單一個檔案就一兩千筆,導致有很多886開頭的電話就算抓出來也有很多中間穿插886的號碼,導致886開頭跟中間的886都被取代成0,假設抓出來的886有四百筆,其中穿插了十來筆號碼之間也剛好有886的,我就不知道要怎麼再把他們篩出來了

稻草人到處草人 wrote:
假設抓出來的886有四百筆,其中穿插了十來筆號碼之間也剛好有886的,我就不知道要怎麼再把他們篩出來了
前面用的
=if(left(儲存格,3)="886","0" & mid(儲存格,4,len(儲存格)-3),儲存格)
是想說,在全部資料都要處理下,所以要先做一個判斷:開頭是不是886,是的就用0取代886;如果不是,那就要保留不動。
不過如果你已經先把886全都抓出來,那就可以省掉前面if判斷,直接大膽用0取代開頭886:
除了用 mid(儲存格,4,len(儲存格)-3) ,還有Replace,可以去掉開頭886之外,您還可以考慮用 SUBSTITUTE來處理,寫法也很簡單:
A1=8861234567890 (文字格式)
A2 輸入 =SUBSTITUTE(A1,886,0,1) .............A2會變成 01234567890
以上都不會影響到中間(在保證開頭是886的情況下)
當然,用VBA一樣也可以,而且愛加多少判斷就加......應該更容易處理。
提供參考。
Der,misser1
內文搜尋
X



























































































