VBA Excel数组中的百分比格式

时间:2011-03-22 19:58:44

标签: arrays excel vba

有没有办法在数组中保存特定格式?我试图在两个单独的网格中找到百分比差异和数字之间的常规差异。我可以单独做这些事情,但当我试图将答案放在同一个工作表中时,我会遇到错误。

截至目前,我计算百分比差异,然后选择我所有答案所在的网格,并更改样式和数字格式。但是,当我尝试显示差异时(例如“百分比差异/差异”)程序返回百分比差异的长小数。我知道原因是因为数字格式和样式格式没有保存到实际数组,但我无法弄清楚如何解决它。

我尝试了以下内容:

  • 在创建斜杠和差异之前更改格式
  • 将答案数组分配给活动单元格中的当前值(值仍为小数,而不是对应的百分比)
  • 计算百分比差异和差异,然后改变格式(这更像是一种微弱的希望,而不是实际尝试改变任何东西)

我不记得我是否尝试了其他任何事情,但我知道它失败了。

*****示例******

用户将我的程序发送到具有两张带有数字网格的特定工作簿。这些网格具有完全相同的尺寸。我的程序将计算这些表(Sheet1 - Sheet2),百分比差异((Sheet1 - Sheet2)/ Sheet2)和两者之间的差异。这三个计算在程序创建的三个单独的表格中呈现。程序生成的所有数字都将位于与首先获得数字的单元格对应的单元格中。此外,第三张纸(百分比和差异)被视为“百分比差异/差异”。现在这是一个测试数字的例子。

网格1

12.0    5.0

2.0     10.0

网格2

6.0     7.0

1.0     3.0

DIFF

6.0     -2.0

1.0     7.0

差异百分比

100.00%     -28.57%

100.00%     233.33%

所以“两个”标签看起来像是:

100.00%/6.0     -28.57/-2.0

100.00%/1.0     233.33%/7.0

很抱歉没有让这更像网格。我不知道如何呈现它。

谢谢

2 个答案:

答案 0 :(得分:2)

不确定我是否完全关注,但我认为您可能只需要范围对象“.Text”方法:

 dim rgNumValues as Range    ' cells formatted as 12.0, 5.0 etc
 dim rgPctValues as Range    ' cells formatted as 100%, -28.57% etc.

然后创建两种格式结合的新单元格

 dim rgNumAndPct as Range

 rgNumAndPct.Cells(1,1) = rgNumValues.Cells(1,1).Text + " / " _
                        + rgPctValues.Cells(1,1).Text

 ' creates cells w string values like "12.0 / 100%", "5.0 / -28.57%" etc.

“。Text”方法从NumValues和PctValues中提取可见字符串,而不是基础数值。只需重写为循环来完成所有单元格。对于非常大的范围,您可以通过在变量数组中创建NumAndPct值并将数组分配到目标范围来加速。

答案 1 :(得分:1)

如果您使用vba中的代码执行此操作,则可以对每个项使用Format函数,并以类似的方式附加单元格。如果一个简单的公式化版本可以使用,就像这样,在需要的地方替换工作表名称。

enter image description here