Excel VBA-字段的值到数字
我的报价生成器创建了一个Excel文档,我想在上面运行一个宏来保持它的计算。由于某种原因,当有数字时,它会说“数字存储为文本”。如何使用宏将它们更改为数字格式?我发现如果我在公式栏中单击一次,问题也解决了 下面的代码是我现在拥有的,但它不能解决错误Excel VBA-字段的值到数字,vba,excel,Vba,Excel,我的报价生成器创建了一个Excel文档,我想在上面运行一个宏来保持它的计算。由于某种原因,当有数字时,它会说“数字存储为文本”。如何使用宏将它们更改为数字格式?我发现如果我在公式栏中单击一次,问题也解决了 下面的代码是我现在拥有的,但它不能解决错误 Range("A1:A" & LastRow).Select Selection.NumberFormat = "0" 列A包含一个金额(1、2、3等)。我还有一列有同样的问题,但它包含一种欧元货币,小数点后有2位 Range("I1:I"
Range("A1:A" & LastRow).Select
Selection.NumberFormat = "0"
列A包含一个金额(1、2、3等)。我还有一列有同样的问题,但它包含一种欧元货币,小数点后有2位
Range("I1:I" & LastRow).Select
Selection.NumberFormat = "0.00"
谢谢你的帮助!:)
对帮助我完成这一完整问题的Siddharth多加赞扬。尝试不同的方法:- 方式1
Selection.NumberFormat = "General"
方式2
vStr = "1000.5"
intNum = CInt(vStr)
方式3
使用VBA将文本转换为数字
如果经常将文本转换为数字,则可以使用宏。
将按钮添加到现有工具栏,并将宏附加到该按钮。然后,选择单元格,并单击工具栏按钮
Sub ConvertToNumbers()
Cells.SpecialCells(xlCellTypeLastCell) _
.Offset(1, 1).Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlPasteSpecialOperationAdd
With Selection
.VerticalAlignment = xlTop
.WrapText = False
End With
Selection.EntireColumn.AutoFit
End Sub
尝试不同的方法:- 方式1
Selection.NumberFormat = "General"
方式2
vStr = "1000.5"
intNum = CInt(vStr)
方式3
使用VBA将文本转换为数字
如果经常将文本转换为数字,则可以使用宏。
将按钮添加到现有工具栏,并将宏附加到该按钮。然后,选择单元格,并单击工具栏按钮
Sub ConvertToNumbers()
Cells.SpecialCells(xlCellTypeLastCell) _
.Offset(1, 1).Copy
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlPasteSpecialOperationAdd
With Selection
.VerticalAlignment = xlTop
.WrapText = False
End With
Selection.EntireColumn.AutoFit
End Sub
汤姆
有三种方法可以解决这个问题
1)返回报价生成器,查看它是如何将数据保存到Excel工作表的,并在那里修改代码
2)手动:突出显示范围并单击绿色三角形旁边的感叹号,然后单击“转换为数字”查看快照
3)使用此代码
Sub Sample()
Dim LastRow As Long, i As Long
LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0"
For i = 1 To LastRow
If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _
Sheets("Sheet1").Range("A" & i).Formula = _
Val(Sheets("Sheet1").Range("A" & i).Value)
Next i
Dim temp As Double
LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00"
For i = 1 To LastRow
If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then
temp = Sheets("Sheet1").Range("I" & i).Value
Sheets("Sheet1").Range("I" & i).ClearContents
Sheets("Sheet1").Range("I" & i).Value = temp
End If
Next i
End Sub
子样本()
昏暗的最后一排一样长,我一样长
LastRow=图纸(“Sheet1”)。范围(“A”和行数。计数)。结束(xlUp)。行
工作表(“Sheet1”)。范围(“A1:A”和“LastRow”)。NumberFormat=“0”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“A”&i).Value)为0,则_
图纸(“图纸1”)。范围(“A”和i)。公式=_
Val(表(“表1”).范围(“A”和“i”).值)
接下来我
双温变暗
LastRow=工作表(“Sheet1”).范围(“I”和Rows.Count).结束(xlUp).行
Sheets(“Sheet1”).Range(“I1:I”和LastRow).NumberFormat=“\$”和“0.00”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“I”&I).Value)为0,则
温度=板材(“板材1”).范围(“I”&I).值
表(“表1”)。范围(“I”和“I”)。ClearContents
板材(“板材1”)。范围(“I”和I)。值=温度
如果结束
接下来我
端接头
跟进
附加快照之前和之后
更多后续行动(重要)
如果你有不同的地区设置,那么你必须适当地照顾他们
例如,必须使用“,”表示小数。请查看快照
汤姆
有三种方法可以解决这个问题
1)返回报价生成器,查看它是如何将数据保存到Excel工作表的,并在那里修改代码
2)手动:突出显示范围并单击绿色三角形旁边的感叹号,然后单击“转换为数字”查看快照
3)使用此代码
Sub Sample()
Dim LastRow As Long, i As Long
LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0"
For i = 1 To LastRow
If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _
Sheets("Sheet1").Range("A" & i).Formula = _
Val(Sheets("Sheet1").Range("A" & i).Value)
Next i
Dim temp As Double
LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00"
For i = 1 To LastRow
If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then
temp = Sheets("Sheet1").Range("I" & i).Value
Sheets("Sheet1").Range("I" & i).ClearContents
Sheets("Sheet1").Range("I" & i).Value = temp
End If
Next i
End Sub
子样本()
昏暗的最后一排一样长,我一样长
LastRow=图纸(“Sheet1”)。范围(“A”和行数。计数)。结束(xlUp)。行
工作表(“Sheet1”)。范围(“A1:A”和“LastRow”)。NumberFormat=“0”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“A”&i).Value)为0,则_
图纸(“图纸1”)。范围(“A”和i)。公式=_
Val(表(“表1”).范围(“A”和“i”).值)
接下来我
双温变暗
LastRow=工作表(“Sheet1”).范围(“I”和Rows.Count).结束(xlUp).行
Sheets(“Sheet1”).Range(“I1:I”和LastRow).NumberFormat=“\$”和“0.00”
对于i=1到最后一行
如果Val(图纸(“图纸1”).范围(“I”&I).Value)为0,则
温度=板材(“板材1”).范围(“I”&I).值
表(“表1”)。范围(“I”和“I”)。ClearContents
板材(“板材1”)。范围(“I”和I)。值=温度
如果结束
接下来我
端接头
跟进
附加快照之前和之后
更多后续行动(重要)
如果你有不同的地区设置,那么你必须适当地照顾他们
例如,必须使用“,”表示小数。请查看快照
可能重复尝试线程Serg,我在浏览可能的解决方案时没有发现。可能重复尝试线程Serg,我在浏览可能的解决方案时没有发现。因此,如果我在宏中添加方式3,它也应该这样做?@Siva Charan:Siva该代码无法解决问题。您在发布之前是否尝试过代码?:)因此,如果我在我的宏中添加方式3,它也应该这样做吗?@Siva Charan:Siva该代码不会解决问题。您在发布之前是否尝试过代码?:)不,我不是在复制和粘贴。我正在做你手工做的事情。“我发现,如果我在公式栏中单击一次,问题也解决了”。试试代码。我已经测试过了:)@Tom:上传了一个快照。“检查后续”@Tom:然后你必须修改范围。我的代码示例只考虑了Col A:)您可以发布数据的快照吗?让我们来看看VBA PRO!他的代码还包含一个空字段处理程序。现在帮了我几次。不,我不是在复制和粘贴。我正在做你手工做的事情。“我发现,如果我在公式栏中单击一次,问题也解决了”。试试代码。我已经测试过了:)@Tom:上传了一个快照。“检查后续”@Tom:然后你必须修改范围。我的代码示例只考虑了Col A:)您可以发布数据的快照吗?让我们来看看VBA PRO!他的代码还包含一个空字段处理程序。现在帮了我几次忙