随机细胞在一系列细胞中 – Excel

我正试图在Excel中实现一个Montecarlo方法。 我需要从A1到P4的单元格范围内select一个随机单元格,因为在这个单元格范围内,我有我需要的数字。

非常感谢

我会这样做的方式是在两列(一个用于行,一个用于列)中使用RAND()函数。

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

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

当心,RANDfunction将自动重新计算。 如果你只想做一次,复制和粘贴特殊值,否则结果会改变。

你在你的问题中提到你要“select一个随机单元格”。 您可能需要使用某种vba代码来执行此操作(事件中不会在您的问题中添加VBA标记)。 这里是我的build议,它将从A1:P4范围中select随机单元格,并将其另外绘制为黄色。

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 

使用命名暴怒test的可读性:

使用ROW,ROWS,COLUMN和COLUMNS来获取要select的区域的大小,RANDBETWEEN获取行和列的随机数,ADDRESS将其转换为A1样式的引用,INDIRECT从中获取该值随机地址:

 =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 ) ) ) 

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

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

请注意,范围由*符号后的14号和4号给出