一個 Excel 的怪問題【求助】



贊助商連結


galrie
2002-08-27, 09:30 PM
今天拿到一個 Excel 的檔案,
其資料內容看來都是 "文字" 格式,
為了要運算之故, 所以將其全轉換成 "數值" 格式,
但無論如何的轉換格式, 就是無法運算 (例如: =a1*2)

我想盡了方法, 就是無解.
後來試著利用字串轉換的方法, 想了解為什麼會這個樣子,
所以就下了這個函式 =LEN(A1) ,
結果發現回傳的值比實際的多了一個位元,
因此我又再下了一個運算式 =VALUE(RIGHT(A1,LEN(A1)-1))
這才真正地轉換成一個數值內容....

可是我的這張試算表相當大, 而且其中的內容全部都是上述的怪格式,
共有一萬多筆, 無法一筆一筆修改, 因此只好請各位高手來指點...

範例的檔案在此 (http://st1.oknet.idv.tw/download/book1.xls)

只截取一小欄, 全整的檔案格式都與它一樣.

贊助商連結


沙拉油
2002-08-28, 02:21 AM
該檔有可能是其他的試算表軟體轉換過來的(純猜測)
執行底下的巨集應該可以解決問題

Sub Macro1()
Dim cl As Range
For Each cl In ActiveSheet.UsedRange
If cl <> "" Then
If Asc(cl) = 63 Then cl = Mid(cl, 2)
End If
Next
End Sub

無聊
2002-08-28, 02:28 AM
你的A欄資料最左邊有一個空字元

共有一萬多筆, 無法一筆一筆修改===>是否在同一工作表且同欄呢?
假設是:偷懶如下,省得拖,提供參考
依你的方式在B1鍵入=VALUE(RIGHT(A1,LEN(A1)-1))
按CTRL+Home鍵到A1
按CTRL+Down(下)鍵到A欄最下列(假設A1000)
右移一儲存格(假設B1000)
按CTRL+Shift+UP(上)鍵選取B欄從(假設B1000)到最上列B1
按CTRL+D
看看如果是否如你所想!

galrie
2002-08-28, 09:58 AM
最初由 沙拉油 發表
該檔有可能是其他的試算表軟體轉換過來的(純猜測)
執行底下的巨集應該可以解決問題

Sub Macro1()
Dim cl As Range
For Each cl In ActiveSheet.UsedRange
If cl <> "" Then
If Asc(cl) = 63 Then cl = Mid(cl, 2)
End If
Next
End Sub

感謝沙拉油君的協助,
您的方法相當好用, 一試就靈.
相當適合用在一堆問題表格的檔案裡.

也非常感謝 無聊君 的協助.

電車
2004-09-27, 04:57 AM
如果確認A欄每一筆資料最左邊都有一個空字元
我會用以下兩種偷懶的辦法處理
1.如果每一筆資料除了最前面以外沒有空字元,該空字元可以文字編輯器UltraEdit>搜尋>取代的方式解決
2.如果後面還有空字元,我都用UltraEdit>編輯>選取範圍>輸入最前面空字元行列的號碼(在檢視裡面有顯示尺規及顯示行號的功能)>剪下>儲存,重新打開該檔後再copy貼到Excel