- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
回復 luhpro
謝謝 luhpro 大大 ,程式可執行 ^_^
諸問 大大 MyTxt = MyTxt & Left( ... , aLen(j - 1) - Len(.Cells(i, j)) * -(i = 1))
wufonna 發表於 2014-9-20 19:00 
之所以需要多這一段是因為在 Excel VBA 中, 中文(雙位元字組 - 全形字) 在某些函數的計算上只佔一個字的寬度
Len("年度")=2
但在文字檔中與其占據相同空間的英數字(單位元字組 - 半形字) :
Len("2014") 卻是 =4
所以當顯示中文字時,
為了要使其與英文字的位置能夠對齊,
往往需要再減掉與中文字數相同的半形字空格.
而這也往往會使得使用全形字的文件在做定位處理時很不方便,
例如一個文件 :
王OO 男 工程師 台北市OO區OOOO路二段000巷00號2樓之一 (02)1234-5678
蘇OO 女 新竹市OO區OO路00號 (05)000-0000
在地址的中文字數不定,
若又有些欄位可能是完全空白的情形下, (這就不適合以空白來做欄位區隔)
如上方例子若想要定位後面的電話就要經過較複雜的計算處理了.
在 Mid 與 Left 等函數也是有這樣的情形,
弔詭的是 "儲存格函數" 中有群 LenB, LeftB 與 MIDB 等可以直接處理雙位元字組的字數定位處理, ( LenB("年度")=4 )
Excel VBA 這種更需要這類處理的語言(讀取文字檔之類的...),
我找了很久都找不到類似的函數可用,
也不知道其他人都是怎樣處理類似問題的. |
|