web-dev-qa-db-ja.com

複数の基準を使用してスプレッドシートでランダムに選択するにはどうすればよいですか

DVDコレクションのデータベースとして使用するOpenOffice(Windows 7 32ビットのV3.3.0)で作成されたスプレッドシートがあります。 SuperUserでの質問 を尋ねた後、何を見るべきかわからないときにコレクションからランダムなタイトルをポップアップできるようにしました。次の式を使用します。

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

これにより、DVDの開始と終了の間でランダムな値が選択され、名前が表示されます。これは問題なく動作しますが、もう少し洗練されたものにするために拡張したいと思います。

DVDを見るたびに、スプレッドシートの列に日付をマークダウンします。ランダムに選択して、たとえば過去6か月間見たことのないものを選択したいと思います。

将来的にはこれを拡張して、たとえば、過去6か月間見たことがなく、コメディーであるランダムなものを選択する可能性があります(映画のジャンルのコラムもあります)。

これを行う方法についてのポインタは、ありがたいことに受け取られます。

3
andygrunt

次に、その映画を最後に視聴した日付とジャンルを含む別の列を追加する必要があります。これを頭のてっぺんから自動化する方法はわかりませんが、ランダムな選択が見つかるまで数式を再計算し続けることができます。

いくつかのIF句を追加して、選択した映画が目的のジャンルに一致するかどうか、および最終再生日が今から特定の日付を超えているかどうかを確認する必要があります。

これを行うには、いくつかのセルに基準を入力し、ランダムなセルの場所を別のセルに保存します。次に、次のようなことができます。

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

これらの値を取得するには、OFFSET関数を使用して、INDIRECTを特定の行/列だけオフセットします。基本的に、その数式に入力した値を新しいOFFSET値に置き換えます。この方法の唯一の注意点は、毎回タイトルを取得できるとは限らないことです。条件に一致するセルが見つかるまで、ランダムセルを再計算し続ける必要がある場合があります(これを自動化する方法がわかりません)。マクロなしで頭のてっぺん)。


詳細については、DVDのタイトルを含むランダムセルをセル_A1_に配置するとします。前の式のTITLEをINDIRECT(A1)に置き換えることができます。ジャンルがその横の列にある場合は、OFFSET(INDIRECT(A1), 0, 1)に置き換えます。次に、セルA1のランダムな値だけを更新すると、条件に自動的に一致します。さらに、いくつかの静的セルに基準を設定できるため、その場で更新することもできます。

2
Breakthrough
  1. まず、DVDのリストを、Breaththroughが提案するのと同様の条件を使用して、「しばらく視聴していません」の小さなリストにフィルタリングします。=FILTER(A1:A1048576, (Last Watched - Today) > 6 Months, (Genre = Selected Genre, TITLE))のようなもの
  2. 次に、既存のランダムセレクター関数— =INDIRECT("B"&RANDBETWEEN(2;COUNTA(B1:B1048576)))を適用し、列B(新しいフィルター処理されたリスト)に変更して、視聴する映画を1つだけ見つけます。
0
David