0

我有一个 Excel 表,我根据数字带选择随机行。我最初的目标是选择一行并保存随机数生成器选择它的时间。但是,由于函数的重新计算和波动性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: =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()功能可能会模拟手动“选择性粘贴”>“值”命令并有效地“冻结”当前值,但这不起作用(不足为奇)。

在弄清楚我做错了什么之前,我能够反复输入F9并成功地观察到浮点时间戳在C列中随机跳跃,并且它的值按预期增加。此外,这将反映在B列中。但是,以前的时间不会被保存,而是重置为 0。

4

1 回答 1

0

我最终发现循环引用解决了我的问题。而不是=VALUE(Cx)B列中使用,我终于想到了测试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,我可以看到单元格逐渐变得越来越红,直到它们在被选中时将自己重新涂成绿色。

于 2017-03-20T20:58:39.097 回答