从单元格列表中popup一个随机值

我有一个类似于这个问题的问题,但有点不同:

比方说,我有这样的数据:

CAR NAME COLOR LIST OF COLORS Car1 ? Red Car2 ? Blue Car3 ? Green Car4 ? Black 

我想随机分配所有的颜色到所有的汽车没有重复,即

 CAR NAME COLOR LIST OF COLORS Car1 Green Red Car2 Black Blue Car3 Blue Green Car4 Red Black 

有没有办法让一个单元格从一个列表中随机select,除了已经input在另一个范围内的值?

D2中input:

 =RAND() 

并抄下来。 在B2中input:

 =INDEX(C$2:C$5,MATCH(LARGE(D$2:D$5,ROW()-1),D$2:D$5,0)) 

并抄下来:

在这里输入图像说明

一种方法是洗牌arrays。 在JavaScript中做相当容易。

如何随机化(洗牌)一个JavaScript数组?

 shuffle = function(o){ for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); // rotate array vertical var vArray = []; for (var i = 0; i < o.length; i++) { vArray.push([o[i]]); } return vArray; } 

电子表格示例:

http://dtab.io/sheets/560b7f5d457aff1e1fe625d2