LibreOffice 电子表格:使用特定过滤器选择随机单元格

Posted

技术标签:

【中文标题】LibreOffice 电子表格:使用特定过滤器选择随机单元格【英文标题】:LibreOffice Spreadsheet: Select random cell with specific filter 【发布时间】:2012-04-13 09:18:57 【问题描述】:

直升机。

我在 LibreOffice 电子表格上有以下场景

在一个表中,我有特定状态的条目

例如:

id   state     name
----------------------------
1    open      OpenState
2    closed    ClosedState
3    resolved  ResolvedState
...
在另一个表中,我列出了第一个表中具有 random State-ID 的项目。效果很好。

例如:

id   state   ProjectName
------------------------
1    1       Proj_1
2    1       Proj_2
3    2       Proj_3
...
第三张表有问题。在此表中,我想生成测试数据。这些条目还具有来自第一个表的状态。现在我需要一个 LibreOffice 函数来为第二个表中的每个条目分配一个 random 项目,该项目具有 same 状态作为条目状态

例如:

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

【问题讨论】:

【参考方案1】:

IMO 这个任务超出了 calc 的可能性。主要问题是似乎没有返回行子集的公式(共享相同状态的项目)。这需要过滤,但似乎没有办法即时应用过滤。因此,如果不准备保存每个项目状态的第二个表,这将无法工作。

因此,IMO 最简单的解决方案是创建三个持久过滤结果,列出具有相同状态的项目。通过这些过滤结果,您可以使用函数INDEXRANDBETWEEN 随机选择一个项目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)
    )
)

使用这个“条目”表:

【讨论】:

感谢您的解决方案。我会试试的。

以上是关于LibreOffice 电子表格:使用特定过滤器选择随机单元格的主要内容,如果未能解决你的问题,请参考以下文章

Python UNO(libreoffice):如何为工作表启用自动过滤器

如何使用 C# 和 LibreOffice/OpenOffice 在电子表格单元格中设置粗体文本?

通过 Python 脚本更新之前打开的 LibreOffice 电子表格而不关闭 LibreOffice

在无头模式下将 libreoffice 电子表格合并到多页文档中?

有没有办法像使用 C# 的 MS Office Excel 一样创建/读取 LibreOffice 电子表格?

LibreOffice Calc电子表格中怎么快速输入数据?