以下是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
答案 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 = "@" 正确使用这个工作