iT邦幫忙

0

excel 公式問題 #VALUE

  • 分享至 

  • xImage

如下載連結
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?
謝謝回答!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

14
海綿寶寶
iT邦大神 1 級 ‧ 2013-12-01 15:27:23
最佳解答

1.J欄沒問題
3.因為只有K26最右邊沒空白,所以只有L26直接KEY數字可以
2.以上
只有一個問題
K欄和L欄的所有資料
最右邊都多了一個空白
將空白刪掉即可正常運算

看更多先前的回應...收起先前的回應...
symis iT邦新手 3 級 ‧ 2013-12-04 00:30:26 檢舉

最右邊都多了一個空白.....不好意思,我點儲存格,沒看到右邊都多了一個空白 @@
要怎麼看啊?

講「空白」是為了讓你容易了解
其實是「不可見字元」
既是不可見字元
就沒法用一般的取代方式
而需要寫 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

以上為解決方法

我猜想你的資料來源可能是從網頁或其他地方「貼」過來的
所以才會有這種奇怪的狀況
最好的方式是從源頭改起
如果不行
也就只能將就著用了

symis iT邦新手 3 級 ‧ 2013-12-05 11:43:07 檢舉

可行耶,謝謝!
不過程式有點看不懂...
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

symis iT邦新手 3 級 ‧ 2013-12-06 13:55:39 檢舉

感謝大師教導,後來有人也提供我另一個方法,是先把CELL轉成文字,再轉成數字,我試過,也可行,在此分享給您參考!

4
showjack
iT邦新手 1 級 ‧ 2013-12-03 09:22:21

在未特別設定格式的情況下, 如果是數值型的欄位應該都是靠右對齊的,
你把你檔案中的K L 欄位的置中對齊取消,
就會發現K 欄位全靠左(除K26靠右), L 欄位也部份靠左(你說的L26 是靠左 ), 表示這兩欄不完全是是數值型 , 所以你說把L26 重新輸入就ok , 是因重輸入後, 該格變為數字型了, 而K26 正好是數值(其他K 格都不是)

所以解決方法你已經看到了
你先把這兩欄先用 清除格式 , 然後數字再重新輸入一次好了

symis iT邦新手 3 級 ‧ 2013-12-04 00:32:16 檢舉

清除格式後,果真現形了,3Q
不過,若資料很多(上千筆),要重打.....@@

slime iT邦大師 1 級 ‧ 2013-12-04 00:54:45 檢舉

有規則的話可以用公式處理, 或者先用搜尋 -> 取代, 把全部空白換成"空字串"(刪除空白), 再用複製 -> 到新 Excel 選擇性貼上 -> 只貼上"值"試試看.

symis iT邦新手 3 級 ‧ 2013-12-05 11:21:44 檢舉

感謝上面的大大回應,好多方法,我再找一個最快速合用的,謝謝!

我要發表回答

立即登入回答