如下載連結
http://www.2shared.com/file/ajEuxUaL/999.html
改了儲存格格式,也將K,L欄的值COPY到別處,再COPY回,都沒用!
我(測試)把J,K,L三欄重KEY IN 數字,即OK
問1: J欄公式有什麼問題嗎?
問2: 為何我把J欄(測試)直接KEY IN 數字,仍不行? K,L欄有何問題?
問3: 為何只有L26直接重KEY IN數字即OK?
謝謝回答!
1.J欄沒問題
3.因為只有K26最右邊沒空白,所以只有L26直接KEY數字可以
2.以上
只有一個問題
K欄和L欄的所有資料
最右邊都多了一個空白
將空白刪掉即可正常運算
最右邊都多了一個空白.....不好意思,我點儲存格,沒看到右邊都多了一個空白 @@
要怎麼看啊?
講「空白」是為了讓你容易了解
其實是「不可見字元」
既是不可見字元
就沒法用一般的取代方式
而需要寫 VBA 程式來取代
1.將以下的程式碼貼進 Excel VBA 模組中
2.選取所有 K,L 欄有問題的儲存格
3.執行巨集(TrimInValid)即可
<pre class="c" name="code">
Function CopyUnicodeToCellByCharacter(rng As Range) As String
Dim i As Integer
Dim CellValue As String
Dim NewValue As String
Dim UnicodeChar As Integer
Dim v As Integer
CellValue = rng.Value
For i = 1 To Len(CellValue)
UnicodeChar = AscW(Mid$(CellValue, i, 1))
v = Asc(ChrW(UnicodeChar))
If v = 46 Or (v >= 46 And v <= 57) Then
NewValue = NewValue & ChrW(UnicodeChar)
End If
Next i
CopyUnicodeToCellByCharacter = NewValue
End Function
Sub TrimInValid()
Dim c As Range
For Each c In Selection
c.Value = CopyUnicodeToCellByCharacter(c)
Next
End Sub
以上為解決方法
我猜想你的資料來源可能是從網頁或其他地方「貼」過來的
所以才會有這種奇怪的狀況
最好的方式是從源頭改起
如果不行
也就只能將就著用了
可行耶,謝謝!
不過程式有點看不懂...
If v = 46 Or (v >= 46 And v <= 57) Then
NewValue = NewValue & ChrW(UnicodeChar)
End If
PS. 答對了,是從網頁「貼」過來的,想不到暗藏玄機...
是 ASCII 碼來的
目的是「只保留有效的數字資料,忽略其他不可見資料」
46 是「小數點」
48-57 是「0」到「9」
所以該列正確應為
If v = 46 Or (v >= 48 And v <= 57) Then
感謝大師教導,後來有人也提供我另一個方法,是先把CELL轉成文字,再轉成數字,我試過,也可行,在此分享給您參考!
在未特別設定格式的情況下, 如果是數值型的欄位應該都是靠右對齊的,
你把你檔案中的K L 欄位的置中對齊取消,
就會發現K 欄位全靠左(除K26靠右), L 欄位也部份靠左(你說的L26 是靠左 ), 表示這兩欄不完全是是數值型 , 所以你說把L26 重新輸入就ok , 是因重輸入後, 該格變為數字型了, 而K26 正好是數值(其他K 格都不是)
所以解決方法你已經看到了
你先把這兩欄先用 清除格式 , 然後數字再重新輸入一次好了