2016-07-27 59 views

回答

2

你可以使用這個公式。我的公式源數據從B3開始。

=REPLACE(B3,1,FIND(LEFT(SUBSTITUTE(B3,0,"")),B3)-1,"") 

enter image description here

+0

我忘了檢查OP標籤..浪費了我的時間 – Rosetta

+1

還是一個很好的答案! –

4

對於非VBA的解決方案,可以突出整行並轉到數據>文本到列,然後點擊「完成」。數字將被轉換爲數字格式,字符串將保持不變。

對於VBA的解決方案,你可以通過細胞循環:

For each rngCell in Sheet1.Columns("A").Cells 

Next rngCell 

這迭代中,使用isnumeric()更換

If isnumeric(rngCell.value) Then rngCell.value = rngCell.value + 0 

或者類似的規定之前對其進行測試。您還可以記錄該文本到列的位,並在VBA中簡單列出列的範圍。取決於數據轉換需要多少控制權。

+1

......當然數字格式不應該是這樣的:'rngCell。NumberFormat =「0000000000」';) – Ralph

0

嘗試將單元格轉換爲數字,然後返回字符串 - 如果失敗,則它已經是字符串。 vba convert string to int if string is a number

編輯:

試圖用一個正則表達式來解決這個問題:

With regEx 
    .Global = True 
    .MultiLine = True 
    .IgnoreCase = False 
    .Pattern = "^0*" 
End With 

If regEx.Test(strInput) Then 
    strInput = regEx.Replace(strInput, "") 
End If 

來源:How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops

+0

這不能完全滿足要求。有些以零開始,但仍然有字符。 –

+0

我剛剛看到。那麼你可以使用正則表達式'^ 0 *'並用一個空字符串替換。 – user3421658

0

你可以使用或不使用VBA一個公式推做到這一點:

=IF(ISNUMBER(Value(A1));Value(A1);A1) 
+0

你測試過了嗎?它的工作是否令人滿意? – skkakkar

+0

是的,當然我已經測試過,完美無缺。它不適合你嗎? – thentt

+0

我正在使用Excel 2016.按照我的理解,ISNUMERIC函數只能用於Microsoft Excel中的VBA代碼,而您提到可以使用帶或不帶VBA的公式來完成此操作。另一個工作表功能ISNUMBER在公式中對我很好。 – skkakkar

4

另一個非VBA解決方案(所有的最簡單)

  1. 突出顯示數據
  2. 您將看到一個驚歎號您的數據顯示在屏幕截圖。點擊它
  3. 點擊 Convert To number
  4. 和你做:)

enter image description here

結果

enter image description here

+1

很好的答案。從2016年4月結束,你的好帖子丟失了。 – skkakkar