excel numberformat

时间:2009-06-22 14:46:40

标签: c# excel excel-vba excel-2007 number-formatting vba

我正在使用excel 2007 ...我有以下范围...

      D    E       G   H
  5   1    2       1   1
  6   2    2       1   1

现在我选择范围F8:G9并写下面的公式“= D5:E6 * 0.2 + G5:H6 * 0.3”并按下CTRL + SHIFT + ENTER ...即做矩阵加法,...现在我有以下结果

       F    G
  8   0.5  0.7
  9   0.7  0.7

现在我选择此结果范围并将其格式的单元格更改为数字格式为0位小数....现在我有以下结果

     F  G
 8   1  1
 9   1  1

现在我有c#程序将读取此范围值...(带范围(...)。value2)... 然后将尝试找到不同的值,但c#假定它读取上述情况1,1,1,1 ......这在现实中是不正确的。此外,c#程序现在将使用这些不同的值来使用equals运算符格式化单元格,在这种情况下,单元格值都不等于1 ...

在excel中可以在numberformat之后进行更改,...到单元格的真实值2 ...但不仅仅是外观!因为当我要求举例时

MsgBox Range("F8").Value2

它显示我0.5,但由于我已经改变了单元格格式,我想看到1而不是...我不想舍入Range(“F8”)的值。值2,因为它只适用于特定的案件。

我的问题是如何在numberformat之后将F8:G9范围的值更改为numberformat更改它们的值????

感谢!!!

2 个答案:

答案 0 :(得分:1)

使用Text对象的Range属性返回格式化版本

e.g。如果单元格A1包含0.77458并且格式化为一个小数位,那么

  • Range("A1").Value2 = 0.77458(作为Double值)
  • Range("A1").Text = 0.8(作为String值)

答案 1 :(得分:0)

格式化只是关于数据显示方式的演示问题。如果你想使用舍入值,你应该使用圆函数在Excel中或在使用Math.Round的.net中舍入实际值。