2013-10-08 203 views
4

我正试图在Excel中实现蒙特卡洛方法。我需要从A1到P4等一系列单元格中选择一个随机单元格,因为在这个单元格范围内我有我需要的数字。单元格范围内的随机单元格 - Excel

谢谢你这么多

+1

我认为问题是清楚的。从一系列单元格中随机选择一个单元格。我也有同样的问题。但是,如果它不属于SE,请将其移动到适当的QA – AaA

回答

4

我会做到这一点的方法是使用RAND()函数中的两列(一个用于行,一个列)。

使用你需要的单元格,在第一列中说R2:R5,放在RAND()中。在S2:S16中(或者从A到P的许多单元格是..),请执行相同操作。

在单元格S1和R1中,使用RANK函数根据R2和S2各自的列对单元格进行排序。然后,使用INDEX函数返回行和列中的特定值。

请注意,RAND函数会自动重新计算。如果你只想做一次,复制并粘贴特殊值,否则结果会改变。

+0

我管理整个事情也使用像你说的公式。 = INDEX((矩阵的数据); RANDBETWEEN(矩阵的行,像1; 15); RANDBETWEEN(矩阵的coloumn像1; 6))但如果我重复这个函数N次有可能性我提取相同的“细胞”。我该如何避免这种? – rikymiami

1

你在你的问题中提到你想'选择一个随机单元'。然后,您可能需要使用某种vba代码才能这样做(事件中,您不会在您的问题中添加VBA标签)。这是我的建议,它将从范围A1:P4中选择随机单元格,并将其另外涂成黄色。

Sub GetRandomCell() 

    Dim RNG As Range 
    Set RNG = Range("A1:p4") 

    Dim randomCell As Long 
     randomCell = Int(Rnd * RNG.Cells.Count) + 1 

    With RNG.Cells(randomCell) 
     .Select 
     .Interior.Color = vbYellow 
    End With 

End Sub 
0

像这样的东西可能会帮助您:

=INDIRECT(CHAR(INT(RAND()*14+65))&CHAR(INT(RAND()*4+49))) 

请注意,范围由14号和4号发出后使用一个名为愤怒test *符号

2

为了便于阅读:

使用ROW,ROWS,COLUMN和COLUMNS获取要选择的区域的大小,RANDBETWEEN获取行和列的随机数ADDR ESS把它变成一个A1样式的引用,并间接获得来自随机地址的值:

=INDIRECT(ADDRESS(RANDBETWEEN(ROW(test),ROW(test)+ROWS(test)-1),RANDBETWEEN(COLUMN(test),COLUMN(test)+COLUMNS(test)-1))) 

格式化,以显示每个部件:

=INDIRECT(
    ADDRESS(
     RANDBETWEEN(
      ROW(test), 
      ROW(test)+ROWS(test)-1 
      ), 
     RANDBETWEEN(
      COLUMN(test), 
      COLUMN(test)+COLUMNS(test)-1 
      ) 
     ) 
) 
相关问题