2017-03-20 30 views
0

我有一张Excel工作表,我根据数字乐段选择随机行。我最初的目标是选择一行并保存随机数发生器所选择的时间。但是,由于rand()函数的重新计算和波动性,我无法保存所有行的选择时间;只有当前的一个。MS Excel - 根据随机行选择运行公式或保存以前的值

| A |  B  |  C  | D |E|F| G | H |  I | 
-+------+-------------+-------------+-----+-+-+------+------+----------+ 
1| Name | Time Save | Time  | Blk | | | Rand | Item | Itm Name | 
2| A | 0   | 0   | 0 | | | 727 | 8 | H  | 
3| B | 0   | 0   | 100 | 
4| C | 0   | 0   | 200 | 
5| D | 0   | 0   | 300 | 
6| E | 0   | 0   | 400 | 
7| F | 0   | 0   | 500 | 
8| G | 0   | 0   | 600 | 
9| H | 42814.58888 | 42814.58888 | 700 | 
10| I | 0   | 0   | 800 | 
11| J | 0   | 0   | 900 | 
  • G2: =RANDBETWEEN(0,E11+100)
  • H2: =MATCH(H2,$E2:E11,1)
  • I2: =INDEX($A$2:$A$27,$I$2)
  • Cx: =IF($Ax=$J$2,NOW(),0)其中x是行数
  • Bx: =VALUE(Cx)其中x是行数

最初我以为可能value()函数会模拟手动粘贴特殊>值命令,并有效地“冻结”当前值,但这不起作用(没有真正的惊喜)。

之前搞清楚什么我做错了,我能够在C列,并将其值增加周围随机键入F9多次成功地观看浮点时间戳跳预期。此外,这将在B列中进行镜像。但是,以前的时间不会保存,而是重置为0.

回答

0

我最终发现循环引用解决了我的问题。而不是在B列中使用=VALUE(Cx),我终于想到测试C列中的当前值是否等于0(未选中),然后使用循环参考,保存以前的值B如果是0,或更新若不是:

Bx: =IF(Cx>0,Cx,Bx)

显然,这给了标准循环引用警告,但由于这是故意的,我绕过它。现在我明白了:

| A |  B  |  C  | D |E|F| G | H |  I | 
-+------+-------------+-------------+-----+-+-+------+------+----------+ 
1| Name | Time Save | Time  | Blk | | | Rand | Item | Itm Name | 
2| A | 42814.62031 | 0   | 0 | | | 159 | 2 | B  | 
3| B | 42814.62052 | 42814.62052 | 100 | 
4| C | 42814.62021 | 0   | 200 | 
5| D | 42814.62050 | 0   | 300 | 
6| E | 42814.62043 | 0   | 400 | 
7| F | 42814.62045 | 0   | 500 | 
8| G | 42814.62046 | 0   | 600 | 
9| H | 42814.62021 | 0   | 700 | 
10| I | 42814.61980 | 0   | 800 | 
11| J | 42814.62015 | 0   | 900 | 

添加一些花哨的颜色规模条件格式的B栏并按住F9 ,我可以看到,直到他们重新绘制自己的绿色在被选定的细胞逐渐成长更红更红和。