西洛。
我在LibreOffice Spreadsheet上有以下场景
e.g:
id state name
----------------------------
1 open OpenState
2 closed ClosedState
3 resolved ResolvedState
...
e.g:
id state ProjectName
------------------------
1 1 Proj_1
2 1 Proj_2
3 2 Proj_3
...
e.g:
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 :(得分:0)
IMO这项任务超出了calc的可能性。主要问题是似乎没有返回行子集的公式(共享相同状态的项目)。这需要过滤,但似乎无法即时应用过滤。因此,如果不准备第二个表来保存每个项目的状态,这将无法工作。
因此,IMO最简单的解决方案是创建三个持久性过滤结果,列出具有相同状态的项目。使用这些过滤结果,您可以使用函数INDEX
和RANDBETWEEN
随机选择一个项目ID。
过滤项目可能会导致此表:
将三个过滤结果中的每一个定义为命名范围(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(因为我已将标题包含在范围的第1行),第二个是范围的最后一行)。 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)
)
)
使用此“条目”表: