標題:
[發問]
儲存內的 1 一 都輚成半型的1
[打印本頁]
作者:
pinklee
時間:
2011-9-20 21:09
標題:
儲存內的 1 一 都輚成半型的1
有4個儲存格分別如下
XX街十二巷一號
XX路12巷1號
XX街十二巷1號
XX路12巷一號
怎麼做到都會轉成
XX路12巷1號
國字 數字全型 都轉成半型的數字呢 感謝您
作者:
oobird
時間:
2011-9-20 21:52
Sub yy()
For Each c In ActiveSheet.UsedRange
c.Value = StrConv(c.Value, vbNarrow, LocaleID)
Next
End Sub
作者:
pinklee
時間:
2011-9-20 23:12
回復
2#
oobird
謝謝 oobird 但是只有阿拉伯數字全型轉半型耶 一 沒有成 半型的1
十一巷 -> 11巷
程式精簡 佩服!
作者:
Hsieh
時間:
2011-9-21 10:44
回復
3#
pinklee
國字的數值要轉成數字會有習慣不同的問題
例如:12若是標準應以一十二才能與二十以上文數字配合
若以數字直接編譯則應為一二
要以口語化轉譯似乎有困難
作者:
pinklee
時間:
2011-9-21 14:23
回復
4#
Hsieh
說的是 有時也要將就一下習慣 再回頭 把文字上的 一十二 改成 十二 呵呵 官大的人都有不同的想法 謝啦
作者:
oobird
時間:
2011-9-21 22:27
難度頗高,例如
二十一 = 21 ~十替換為空
十五 = 15 ~十替換為1
十 = 10 ~十替換為10
作者:
pinklee
時間:
2011-9-22 15:48
XX街二十二巷1號
XX街一十二巷一十號
XX路12巷1號
XX街一十二巷1號
XX路12巷二一號
XX街一十巷1號
XX街一十巷1號
用了各位先進指教的 亂做了一下下
Sub ttt()
Dim a, b As String
For Each C In ActiveSheet.UsedRange
C.Value = StrConv(C.Value, vbNarrow, LocaleID)
Next
For i = 1 To 10 Step 1
a = "一二三四五六七八九十"
b = "123456789十"
Cells.Replace Mid(a, i, 1), Mid(b, i, 1)
Next
a = "十巷十弄十號"
b = "0巷0弄0號"
For i = 1 To 6 Step 2
Cells.Replace Mid(a, i, 2), Mid(b, i, 2)
Next
a = "十"
b = ""
For i = 1 To 1
Cells.Replace Mid(a, i, 1), Mid(b, i, 1)
Next
End Sub
結果如下
XX街22巷1號
XX街12巷10號
XX路12巷1號
XX街12巷1號
XX路12巷21號
XX街10巷1號
XX街10巷1號
似乎可行
作者:
Hsieh
時間:
2011-9-22 18:06
回復
7#
pinklee
如果國數字的寫法與格式DBNum1相同可試試
預設最大數字為2000(因為號碼有超過1000號的地址)
可自行設定
Sub nn()
Dim C As Range
For i = 2000 To 1 Step -1
k = Application.Text(i, "[DBNum1]")
Cells.Replace k, i
Next
For Each C In ActiveSheet.UsedRange
C.Value = StrConv(C.Value, vbNarrow, LocaleID)
Next
End Sub
複製代碼
作者:
pinklee
時間:
2011-9-22 18:49
回復
8#
Hsieh
高手出招 的確不凡 簡潔
測了一下 如果是十二巷 不是一十二巷 無法轉換十 會轉成
XX街十二巷1號 ->XX街十2巷1號
謝了
作者:
Hsieh
時間:
2011-9-22 22:24
本帖最後由 Hsieh 於 2011-9-22 22:27 編輯
回復
9#
pinklee
不是說了要以DBNUM1格式為前提嗎?
若有兩種可能
如:12=> 一十二
或十二
或一二
Sub nn()
Dim C As Range
With ActiveSheet.UsedRange
For i = 200 To 1 Step -1
k = Application.Text(i, "[DBNum1]")
m = Application.Text(i, "[DBNum1]0")
.Cells.Replace m, i
.Cells.Replace k, i
If Int(i / 10) = 1 Then .Cells.Replace Mid(k, 2), i
Next
For Each C In .Cells
C.Value = StrConv(C.Value, vbNarrow, LocaleID)
Next
End With
End Sub
複製代碼
作者:
pinklee
時間:
2011-9-23 07:58
回復
10#
Hsieh
拍勢 拍勢 一時沒注意到 感謝啦
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)