2012-04-13 71 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