題 如何使用多個條件在電子表格中進行隨機選擇


我有一個在OpenOffice(Windows 7 32位的V3.3.0)中創建的電子表格,我用它作為我的DVD集合的數據庫。問了一個 SuperUser中的問題,我有它所以它可以從我的收藏中彈出一個隨機的標題,因為我無法決定要觀看什麼。它使用以下公式:

=INDIRECT("A"&RANDBETWEEN(2;COUNTA(A1:A1048576)))

這將選擇DVD的開頭和結尾之間的隨機值並顯示名稱。這很好但我現在想擴展它以使它更複雜一點。

每次觀看DVD時,我都會在電子表格的列中標記日期。我現在想要隨機選擇一個我沒見過的,比如過去六個月。

我可能會在將來對此進行擴展,例如,選擇一個我在過去6個月裡沒有看過的隨機片段並且是喜劇片(我也有一部電影的類型)。

任何關於如何做到這一點的指示都將非常感激。


3
2017-08-15 15:26


起源




答案:


您現在需要添加另一個列,其中包含您上次觀看所述電影的日期以及該類型。我不知道如何從頭頂自動化這個,但你可以繼續重新計算公式,直到找到隨機選擇。

你需要做的是添加幾個 IF 條目以查看所選電影是否與您想要的類型相匹配,以及上次播放日期是否超過現在的某個日期。

要做到這一點,我要做的是在幾個單元格中輸入我的標準,並將隨機單元格的位置存儲在另一個單元格中。然後,您可以執行以下操作:

=IF((Last Watched - Today) > 6 Months, IF(Genre = Selected Genre, TITLE))

要獲得這些值,您可以使用 OFFSET 功能抵消你的 INDIRECT 通過一定量的行/列。基本上,您將使用new替換我在該公式中放置的值 OFFSET 值。這種方法的唯一警告是你不能保證每次都能得到一個標題 - 你可能不得不重新計算隨機單元格,直到它找到一個符合你標準的單元格(我不知道如何自動關閉它)沒有宏的我的頭頂)。


更多細節,假設您將包含DVD標題的隨機單元格放在單元格中 A1。你可以用以前的公式替換TITLE INDIRECT(A1)。如果類型位於其旁邊的列中,請將其替換為 OFFSET(INDIRECT(A1), 0, 1)。然後,您可以只更新單元格A1中的隨機值,它將自動匹配您的條件。此外,您可以在多個靜態單元格中設置標準,因此您也可以即時更新。


2
2017-08-15 15:40





  1. 首先,將DVD列表過濾成一個較小的“暫時沒有看過”的列表,使用與Breaththrough建議類似的條件:類似於 =FILTER(A1:A1048576, (Last Watched - Today) > 6 Months, (Genre = Selected Genre, TITLE))
  2. 然後應用您現有的隨機選擇器功能 - =INDIRECT("B"&RANDBETWEEN(2;COUNTA(B1:B1048576))) ,改為專欄 B (新的過濾列表) - 找到一部要觀看的電影。

0
2018-05-13 01:58