iT邦幫忙

0

vba 中文數字轉換阿拉伯數字

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20221212/201482315sInJcS3qQ.jpg

https://docs.google.com/spreadsheets/d/1j90BLMgF2u8HxD_6cHGnA8XeNzvJxwLg/edit?usp=share_link&ouid=106469221305260651487&rtpof=true&sd=true

請問如何將A欄只要有包含中文數字(無論縣市路段巷弄號樓)全轉換成B欄阿拉伯數字,但要注意
1.像B5、B10、B11可能一個地址會有2個以上中文數字,全都要轉換。
2.像B7、B13是連續數字,就不能以單數字轉換,例如7 10 8,而是要轉換為78。

我有在F:G欄設數字對照,但不確定該怎麼套用,或是根本不需要對照欄,以上求解~~~

看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2022-12-12 16:39:24 檢舉
路名用阿拉伯數字很奇怪吧,一般不是只有到門牌號碼之後才會用阿拉伯數字?
那這個地區的路名..
台南市七股區三百廿萬
re.Zero iT邦研究生 5 級 ‧ 2022-12-12 18:00:21 檢舉
提問寫出了:「(無論縣市路段巷弄號樓)」,應該是通通都換掉沒差吧。範例內也是通通換掉了~
淺水員 iT邦大師 6 級 ‧ 2022-12-12 19:32:24 檢舉
我猜是想把「六十巷」這種轉「60巷」
但「五權一路」這種不用轉吧?
(按照慣例的話)
哈~~~真的是非常感謝網大們的熱心幫忙ㄟ,其實我的用意主要是為了比對資料使用。因為資料有地址需與不同資料來源的地址比對,但由於各個資料來源的正確性都不太一致,尤其人工輸入的資料更亂,所以才會想說既然如此不如全部轉換成數字,比對會比較簡單一點。還是網大們有更好的方法或建議?
其實我原本是想用我設好的F:G由大至小比對,比對相符則取代成數字,但我不知道怎麼保留原字串單取代中間數字,尤其會遇到2個以上數字這種不規則狀況,我才會想破頭只好上網求助醬~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-12-12 17:27:30

其實我覺得這麼做沒有什麼太大意義
而且也不會解決你根本的問題
/images/emoticon/emoticon10.gif

回到問題本身
如果只是要轉一到九十九的話
VBA 我用笨方式寫好了
執行結果如下
1.執行前
https://ithelp.ithome.com.tw/upload/images/20221213/20001787NSxz36OKLi.jpg
2.執行後
https://ithelp.ithome.com.tw/upload/images/20221213/20001787KDF1DoXtFZ.jpg

註:最右邊那個 MATCH 是手動加上去的公式
VBA 沒有寫這段

看更多先前的回應...收起先前的回應...

海大,汐萬路不轉,三千路=3千路,百

百齡五路=百齡5路,應該說只要參照我F:G欄的數字轉換即可。

海大~其實我原本是想用我設好的F:G由大至小比對,比對相符則取代成數字,但我不知道怎麼保留原字串單取代中間數字,尤其會遇到2個以上數字這種不規則狀況,我才會想破頭只好上網求助醬~~

我終於看懂了
你要轉的是「地址裡所有的國字數字」
範圍是「一、二、三...到九十九」
是吧

程式寫好了,結果如上

0

我會建議你。巷弄號樓轉換就好。
路街的不要換。
如果路街的也想換。
我倒是建議表對應處理更換會比較好。

浩大~~~其實我的用意主要是為了比對資料使用。因為資料有地址需與不同資料來源的地址比對,但由於各個資料來源的正確性都不太一致,尤其人工輸入的資料更亂,所以才會想說既然如此不如全部轉換成數字,比對會比較簡單一點。還是浩大有更好的方法或建議?

如果只是單純比對的話。
我早期的做法可以給你試試看。

區段性比對查找。所由的區段性比對。
例:要找「五福十一路」
那我會先將其區分拆解為
「五福」「5福」+
「11路」「十一路」「一一路」「一十一路」(就是有這樣的混蛋打這樣)
再個別搜尋兩組條件相加有大於2的就行。

當然了,這是區段性比對才可以這樣幹。
如果是全句比對處理的話。
一般我會將阿拉伯數字先用正則解析出來。(因為純英數分離會比較容易)
再將其數字轉換成國字後再生成出來。然後再比對。
但並不會去改原來的文字。只是在比對時經由正則公式處理再後比對。

基本以上兩種方發,都是不更換原來的地址為原則。
而是採用比對是統一化處理後再做比對。

浩大~其實我原本是想用我設好的F:G由大至小比對,比對相符則取代成數字,但我不知道怎麼保留原字串單取代中間數字,尤其會遇到2個以上數字這種不規則狀況,我才會想破頭只好上網求助醬~~

我要發表回答

立即登入回答