2012-04-13 74 views
0

Helo。LibreOffice電子表格:選擇具有特定過濾器的隨機單元

我已經在LibreOffice的電子表格以下情形

  • 在一個表中我有項與特定狀態

如:

id state  name 
---------------------------- 
1 open  OpenState 
2 closed ClosedState 
3 resolved ResolvedState 
... 
  • 在其他表我有項目列表隨機 State-I D從第一張桌子。這工作正常。

e.g:

id state ProjectName 
------------------------ 
1 1  Proj_1 
2 1  Proj_2 
3 2  Proj_3 
... 
  • 我有第三個表的問題。在這個表格中我想生成測試數據。這些條目還有第一個表中的狀態。現在我需要一個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這個任務超過了鈣的可能性。主要的問題是似乎沒有公式返回行的子集(共享相同狀態的項目)。這需要過濾,但似乎無法實時應用過濾。所以,如果不準備保存每個項目狀態的第二個表格,這將不起作用。

因此,IMO最簡單的解決方案是創建三個永久性過濾結果,列出具有相同狀態的項目。通過這些篩選結果,您可以使用功能INDEXRANDBETWEEN隨機選擇一個項目標識。

過濾項目可能會導致此片:

Projects

隨着各自定義命名區域的三個過濾結果(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(因爲我已經將頭部包含在範圍的第一行中),第二個是範圍的最後一行)。 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 2012-04-25 04:04:57