我需要翻譯一個在AS/400上工作的舊程序,該程序正在挑選隨機學生爲我的城市工作。只要它有效,我可以使用任何程序。爲了簡單和快速,我選擇了excel。沒有重複和不固定數據的隨機Excel函數
不過,我過來了一個小問題。我不需要重複,因爲同一個學生在一個夏天不能做2份工作。另外,我需要靈活一些,因爲每年都會增加新學生,有些會被刪除。
此功能幾乎一樣多,因爲我想要的: = INDEX($ A:$ A,RANDBETWEEN(1,COUNTA($ A:$ A)),1)
指數$ A:$ A獲得列A中的所有行。因此,即使我添加了20個名稱,也會考慮到它們。然後,它隨機選擇第1行和$ A列中的總行數(COUNTA)之間的值(名稱)。這種方法的問題是它允許重複。
我發現的另一個功能是創建一個滿= ALEA()的柱子,然後按數字對這些柱子進行排序。這不是很漂亮,但至少,沒有重複。的問題來自我的公式,即是靜態的,並且我不能使柔性:
= INDEX($ A $ 2:$ A $ 74 RANK(B2,$ B $ 2:$ B $ 74))
我的名字在colum $ A和我的隨機值colum $ B中。我說的是,排列B2中的值(然後B3,然後B4等),在列B中找到。
我想將COUNTA集成到第二個函數中,並且(如果POSSIBLE)採取RANDBETWEEN而不是排名功能,以便我沒有醜陋的數字。
我打開使用某種重複檢查的第一個功能。只要祕書不必進行大量的操縱,它應該沒問題。
非常感謝您的幫助XOX
非常感謝您的幫助傑克,這工作像一個魅力。只是一個小問題: count =列A中的名稱數量。 name = A列中選擇的隨機名稱。 row =這是幹什麼用的? 範圍(「F11」)是指定你想要的10個名字 行刪除就是刪除該行沒有重複 現在,我明白2個隨機索引可能會出現相同的名稱,但如果該名稱被刪除會發生什麼?它只是退出循環?另外,你有沒有想法只刪除那些實際挑選的方法?就好像我想知道誰沒有被挑選出來一樣,我可以不用手工做呢? – Maude 2012-07-19 16:39:26
它是如何工作的,它會刪除在每次迭代中被選中的人,所以仍然在列表中的人還沒有被選中。正如我在我的帖子中所說的,如果你想一次獲得一個名字,只需刪除循環。至於行變量,即用於標識要刪除的行號。 – jrad 2012-07-19 16:45:15
問題是假設我有16個名字,我選擇了F14,它刪除了整列A,即使在我的F列中沒有名字。 爲了證明這一點,我在列A中寫了Maude1到Maude20的名字。然後我運行了你的函數。結果,我按隨機順序得到了14個名字,但是整個A列不見了,包括沒有被選中的那個。 – Maude 2012-07-19 19:47:32