2012-04-13 5 views
0

Helo。LibreOfficeスプレッドシート:特定のフィルタを持つランダムセルを選択します。

  • 表1で

    は、私は私が特定の状態でエントリをLibreOfficeのスプレッドシート上の次のシナリオを持っている

例えば:私が持っている他のテーブルで

id state  name 
---------------------------- 
1 open  OpenState 
2 closed ClosedState 
3 resolved ResolvedState 
... 
  • ランダムのプロジェクトのリスト State-I Dを最初のテーブルから削除します。それはうまく動作します。

例えば:

id state ProjectName 
------------------------ 
1 1  Proj_1 
2 1  Proj_2 
3 2  Proj_3 
... 
  • 私は3番目のテーブルに問題があります。この表では、テストデータを生成する必要があります。エントリには、最初のテーブルの状態も含まれます。今、私は2番目のテーブルから各エントリにランダムプロジェクトを割り当てることがLibreOfficeの機能を必要とするエントリの状態として同じ状態を持っている

例:

id state project EntryName 
-------------------------------- 
1 1  2   Entry_1 
2 1  1   Entry_2 
3 1  1   Entry_3 
4 2  3   Entry_4 
... 

答えて

0

IMOこのタスクは、カルク年代を超えて可能性。主な問題は、行のサブセット(同じ状態を共有するプロジェクト)を返す式がないように見えることです。これにはフィルタリングが必要ですが、オンザフライでフィルタリングを適用する方法はないようです。したがって、各プロジェクトの状態を保持する2番目のテーブルを用意しなければ、これは機能しません。

したがって、最も簡単な解決策は、同じ状態のプロジェクトを一覧表示する3つの永続フィルタ結果を作成することです。これらのフィルタ結果を使用すると、関数INDEXRANDBETWEENを使用して、プロジェクトIDの1つをランダムに選択できます。

プロジェクトをフィルタリングすると、このシートにつながる可能性があります

Projects

を名前付き範囲として定義されて3つのフィルタ結果のそれぞれに(ProjState1$E$1:$G$4など)には、次の式を使用することができます。

=IF(($B2=1);INDEX(ProjState1;RANDBETWEEN(2;ROWS(ProjState1));1) ;IF(($B2=2);INDEX(ProjState2;RANDBETWEEN(2;ROWS(ProjState2));1);INDEX(ProjState3;RANDBETWEEN(2;ROWS(ProjState3));1))) 

RANDBETWEENは2つの整数の間の乱数を返します。最初は2です(ヘッダーは範囲の行1として含まれているため)、2番目は範囲の最後の行です)。 INDEXは、ランダムに返された行の値を選択します。この "エントリ" テーブルと

=IF(
    ($B2=1); 
    INDEX(
     ProjState1; 
     RANDBETWEEN(
      2; 
      ROWS(ProjState1) 
     ); 
     1 
    ); 
    IF(
     ($B2=2); 
     INDEX(ProjState2;RANDBETWEEN(2;ROWS(ProjState2));1); 
     INDEX(ProjState3;RANDBETWEEN(2;ROWS(ProjState3));1) 
    ) 
) 

複数行に分割します

解決のための

Entries

+0

感謝。やってみます。 – WebDucer

関連する問題