如何在Excel工作表中将列格式设置为数字格式?

以下是VBA代码。 Sheet2包含通用格式的所有值。 运行代码后,Sheet3的“C”列中的值包含13位或更多位数的指数值。

应该怎么做,以便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 

这将格式列A作为文本,B作为一般,C作为一个数字。

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

如果你的13位数字真的是文本,那你不打算对它做任何的math运算,你可以在它之前加一个撇号

 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 

对不起碰到一个老问题,但答案是计算单元格的字符长度,而不是数值。

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

希望有所帮助。 干杯