2017-03-20 74 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 ,我可以看到,直到他們重新繪製自己的綠色在被選定的細胞逐漸成長更紅更紅和。