Random MS Excel-基于随机行选择运行公式或保存以前的值
我有一个Excel表格,我根据数字带随机选择行。我最初的目标是选择一行,并节省随机数生成器选择该行的时间。然而,由于Random MS Excel-基于随机行选择运行公式或保存以前的值,random,excel-formula,excel-2007,excel-match,non-volatile,Random,Excel Formula,Excel 2007,Excel Match,Non Volatile,我有一个Excel表格,我根据数字带随机选择行。我最初的目标是选择一行,并节省随机数生成器选择该行的时间。然而,由于rand()函数的重新计算和波动性,我无法保存所有行的选择时间;只有当前的一个 | A | B | C | D |E|F| G | H | I | -+------+-------------+-------------+-----+-+-+------+------+----------+ 1|
rand()
函数的重新计算和波动性,我无法保存所有行的选择时间;只有当前的一个
| 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:=randtween(0,E11+100)
H2:=匹配(H2,$E2:E11,1)
I2:=索引($A$2:$A$27$I$2)
其中Cx:=IF($Ax=$J$2,NOW(),0)
是行号x
其中Bx:=值(Cx)
是行号x
value()
函数可能会模拟手动粘贴特殊>值命令,并有效地“冻结”当前值,但这不起作用(没有真正的意外)
在弄清楚我做错了什么之前,我能够反复键入F9,并成功地观察到浮点时间戳在
C
列中随机跳转,其值按预期增加。此外,这将反映在B
列中。但是,以前的时间不会被保存,而是重置为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,我可以看到单元格逐渐变红,直到被选中后重新将自己涂成绿色