• 3

想請問如果在EXCEL某格內「只取代開頭幾個字元」能怎麼做呢?

各位好,我想請問有關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

求指教

感謝!!
2020-09-10 10:18 發佈
使用函數 REPLACE 試試看...
語法: REPLACE(old_text,start_num,num_chars,new_text)
稻草人到處草人 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的,我就不知道要怎麼再把他們篩出來了
Vian_sonic wrote:
使用函數 REPLACE...(恕刪)

感謝sonic大,我會研究看看這個語法的。
Vian_sonic wrote:
使用函數 REPLACE...(恕刪)


A1 是 8861234567890 (文字格式)
A2 輸入 =REPLACE(A1,1,3,"0") 結果是:01234567890

這是Vian_sonic提供的方法,樓主您參考一下囉
Der,misser1
misser wrote:
A1 是 8861234567890...(恕刪)


謝謝M大
這個目前來說很夠用了
篩選886開頭的數字後再把開頭三個字取代掉
目前確實這是最簡單的方式了
甘蝦
misser wrote:
其實有點不懂:是怎樣(恕刪)


不好意思,誤會M大意思,剛剛才看懂【=if(left(儲存格,3)="886","0" & mid(儲存格,4,len(儲存格)-3),儲存格)】這個功能,因為從來沒用到過len和mid......

我想這應該會很好用

感謝M大
如果先用篩選把0跟886分開呢
886的再用left ?
稻草人到處草人 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
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?