我需要通过VBA动态地将NumberFormat设置为导入的文本文件值,如下所示:
导入值数字类型为"General",因此我希望更改为" number ",但保留小数点。
12.324 ............................ 3 decimal points
2.12 .............................. 2 decimal points
0.00123 ............................5 decimal points
12.1234567 ........................ 7 decimal points以及同一列中的所有数据。
代码很简单:
Range("A1").Numberformat ="##0.0##"
Range("A2").Numberformat ="#0.0#"
Range("A3").Numberformat ="#0.0####"
Range("A4").Numberformat ="##0.0######"所以,我需要动态地设置"#“。
小数点后数设置的原因对于计算不确定度结果是非常重要的。在计算中,需要分辨率,这意味着小数点之后有多少位数字出现在进行校准的测量装置上。
我找到了解决办法。
res_dec_point = Len(Split(res_val & ",", ",")(1))
kes_dec_point = Len(Split(kes_val & ",", ",")(1))
MyNumberFormat_res = "0."
For i_num = 1 To res_dec_point
MyNumberFormat_res = MyNumberFormat_res & "0"
Next i_num
MyNumberFormat_kes = "0."
For i_num = 1 To kes_dec_point
MyNumberFormat_kes = MyNumberFormat_kes & "0"
Next i_num发布于 2020-07-12 08:17:05
简而言之,据我所知,您的代码需要读取格式化为字符串值的十进制数字,然后将它们写入格式化为十进制数字的目标单元格。每个目标单元格都需要以原始字符串值中存在的小数位数进行格式化。
问题中没有包含您的代码,因此我将不提供完整的代码作为回应,但在这里的概要中,有一种方法可以实现:
Instr函数定位小数点,然后计算小数点右侧的数字数.Range("A1").Numberformat ="0.0"中,"0.0“部分是一个字符串。你可以利用这一点来发挥你的优势。查找或动态生成一个字符串值,表示每个单元格所需的数字格式。下面是一个代码片段,它生成并分配一个具有可变小数位数的数字格式:
Dim MyNumberFormat As String, NumberOfDecimals As Integer
MyNumberFormat = "0."
For i = 1 To NumberOfDecimals
MyNumberFormat = MyNumberFormat & "0"
Next
MyWorksheet.Cells(1, 1).NumberFormat = MyNumberFormat我相信这回答了你问题的核心。您需要使用自己的代码构建它,定义如果NumberOfDecimals为0会发生什么,等等。
发布于 2020-07-12 07:49:40
值的格式设置不会更改该值。

在本例中,我们计算2/3,并使用“通用格式”显示它,并使用3、4或5小数位数。
在最后一行中,我们从第一行的值中减去0.666。绿色的值都是“通用格式”。
结论:格式不改变值!
https://stackoverflow.com/questions/62857895
复制相似问题