首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考虑不确定度计算时VBA excel中单元格NumberFormat的动态设置

考虑不确定度计算时VBA excel中单元格NumberFormat的动态设置
EN

Stack Overflow用户
提问于 2020-07-12 06:41:50
回答 2查看 2.1K关注 0票数 0

我需要通过VBA动态地将NumberFormat设置为导入的文本文件值,如下所示:

导入值数字类型为"General",因此我希望更改为" number ",但保留小数点。

代码语言:javascript
复制
12.324 ............................ 3 decimal points  
2.12 .............................. 2 decimal points  
0.00123 ............................5 decimal points  
12.1234567 ........................ 7 decimal points

以及同一列中的所有数据。

代码很简单:

代码语言:javascript
复制
Range("A1").Numberformat ="##0.0##"
Range("A2").Numberformat ="#0.0#"
Range("A3").Numberformat ="#0.0####"
Range("A4").Numberformat ="##0.0######"

所以,我需要动态地设置"#“。

小数点后数设置的原因对于计算不确定度结果是非常重要的。在计算中,需要分辨率,这意味着小数点之后有多少位数字出现在进行校准的测量装置上。

我找到了解决办法。

代码语言:javascript
复制
  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

谢谢https://stackoverflow.com/users/10968406/bdra

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-12 08:17:05

简而言之,据我所知,您的代码需要读取格式化为字符串值的十进制数字,然后将它们写入格式化为十进制数字的目标单元格。每个目标单元格都需要以原始字符串值中存在的小数位数进行格式化。

问题中没有包含您的代码,因此我将不提供完整的代码作为回应,但在这里的概要中,有一种方法可以实现:

  1. 标识原始字符串值中的小数位数。使用Instr函数定位小数点,然后计算小数点右侧的数字数.

  1. 数字格式本身表示为字符串值。例如,在Range("A1").Numberformat ="0.0"中,"0.0“部分是一个字符串。你可以利用这一点来发挥你的优势。查找或动态生成一个字符串值,表示每个单元格所需的数字格式。

  1. 将数字格式分配给目标单元格.

下面是一个代码片段,它生成并分配一个具有可变小数位数的数字格式:

代码语言:javascript
复制
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会发生什么,等等。

票数 1
EN

Stack Overflow用户

发布于 2020-07-12 07:49:40

值的格式设置不会更改该值。

在本例中,我们计算2/3,并使用“通用格式”显示它,并使用3、4或5小数位数。

在最后一行中,我们从第一行的值中减去0.666。绿色的值都是“通用格式”。

结论:格式不改变值!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62857895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档