如何在Excel工作表中格式化列到数字格式?

时间:2012-03-17 17:28:26

标签: excel vba

以下是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

4 个答案:

答案 0 :(得分:23)

这会将A列格式化为文本,B格式为General,C格式为数字。

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

答案 1 :(得分: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

答案 2 :(得分:0)

很抱歉碰到一个老问题,但答案是计算单元格的字符长度,而不是它的值。

CellCount = Cells(Row, 10).Value
If Len(CellCount) <= "13" Then
'do something
End If
希望有所帮助。干杯

答案 3 :(得分:0)

ActiveWorkbook.Worksheets("NON SMTF").Columns("C:C").NumberFormat = "@" 正确使用这个工作