2012-03-17 58 views
4

以下是VBA代碼。 Sheet2包含通用格式的所有值。運行代碼後,Sheet3的「C」列中的值包含13位或更多位數的指數值。如何在Excel工作表中將列格式設置爲數字格式?

應該如何處理以使Sheet3的'C'列不包含指數值?

private Sub CommandButton1_Click() 
Dim i, j, k As Variant 

k = 1 
For i = 1 To 30000 
If Sheet2.Range("c" & i).Value >= 100 And Sheet2.Range("c" & i).Value < 1000 Then 
Sheet3.Range("a" & k).Value = Sheet2.Range("a" & i).Value 
Sheet3.Range("b" & k).Value = Sheet2.Range("b" & i).Value 

Sheet3.Range("c" & k).Value = Sheet2.Range("c" & i).Value 

k = k + 1 
End If 
Next 

End Sub 
+0

請詳細解釋一下。你只是想在特定列中格式化數字或什麼? – elrado 2012-03-17 17:55:54

+0

是想格式化只需要的列 – Punith 2012-03-17 18:04:03

+0

我沒有看到這在13,而是在第15位。你想要顯示結果還是數學運算?是保存爲文本字符串並轉換爲值使用它可能? – datatoo 2012-03-17 21:11:35

回答

20

這會將列A格式化爲文本,B作爲常規格式,C作爲數字格式。

Sub formatColumns() 
Columns(1).NumberFormat = "@" 
Columns(2).NumberFormat = "General" 
Columns(3).NumberFormat = "0" 
End Sub 
+0

我試圖通過Workbooks(「B.xlsm」)在特定工作簿中爲特定工作表執行此操作ActiveSheet.Columns(「1」)。NumberFormat =「0 「'這似乎並不適合我。有任何想法嗎? – user248884 2017-10-05 23:12:20

1

如果你的13位「一把手」是真的文字,那是你不打算做任何數學,你可以用單引號

Sheet3.Range("c" & k).Value = "'" & Sheet2.Range("c" & i).Value 

它前面,但我不看不到怎樣一個13位數字將永遠得到過去的if語句,因爲它總是會大於1000這裏有一個替代版本

Sub CommandClick() 

    Dim rCell As Range 
    Dim rNext As Range 

    For Each rCell In Sheet2.Range("C1:C30000").Cells 
     If rCell.Value >= 100 And rCell.Value < 1000 Then 
      Set rNext = Sheet3.Cells(Sheet3.Rows.Count, 1).End(xlUp).Offset(1, 0) 
      rNext.Resize(1, 3).Value = rCell.Offset(0, -2).Resize(1, 3).Value 
     End If 
    Next rCell 

End Sub 
0

對不起碰到一個老問題,但答案是數字符單元格的長度而不是它的值。

CellCount = Cells(Row, 10).Value 
If Len(CellCount) <= "13" Then 
'do something 
End If 

希望有幫助。乾杯

相關問題