2013-10-08 59 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 
      ) 
     ) 
) 
相關問題