将多个匹配项的值连接到单个单元格中

将多个匹配项的值连接到单个单元格中

我有一个电子表格,我想将其设置如下:

A    | B       | C       | D         | ... | G        | H
Date   Trainer   Trainee   Procedure         Employee   Credentials
...    Aster     Lisa      A                 Aster      A
...    Frank     Lisa      B                 Frank      C, A
...    Frank     Aster     A                 Lisa       A, B, C
...    Lark      Frank     C                 Lark       
...    Lark      Frank     A
...    Frank     Lisa      C

我的问题是,我可以使用哪种公式来使凭证列包含学员条目与员工条目匹配的每个程序的连接列表?理想情况下,不需要对数据进行排序,因为它已经按日期排序了。

答案1

我建议一个可以在 LibreOffice Calc 5.4 中运行的解决方案。它使用内置的 TEXTJOIN 函数,该函数仅在 LibreOffice Calc 的最新版本中可用。因此,如果您使用的是旧版本,请尝试升级到 v5.4。

在此示例中,样本数据位于单元格 C2:D8 中。同时将第一行保留为标题行,以使公式正常工作,因为解决方案中引用第一行才能正常工作。

受训人员姓名输入单元格 E2:E6。

现在在 F2 中输入以下公式。

=IFERROR(TEXTJOIN(",",1,IFERROR(INDEX($D$2:$D$8,N(IF(1,IF($C$2:$C$8=E2,ROW($D$2:$D$8)-ROW($D$1),9^99)))),"")),"")

在公式栏中按 CTRL + SHIFT + ENTER (CSE) 创建数组公式。如果没有 CSE,公式将无法正常工作。

现在将此公式复制并粘贴到 F3 至 F6 中的所有适用单元格。这已在 Windows 操作系统上进行了测试,即使您使用的是 Linux,也应该可以正常工作。

由于您的标签提到了 LibreOffic Calc,因此此解决方案特定于 LibreOffice Calc。如果您使用的是 MS Excel,则 TEXTJOIN 仅在 Office 2016 和 Office 365 版本中可用。在这种情况下,如果 TEXTJOIN 不是本机可用的,则您需要在 VBA 中编写一个。

在此处输入图片描述

答案2

在电子表格中执行此操作的各种方法如下:Excel - 如何使用 vlookup 返回多个值? 首先,这是通过数组公式实现的,该公式会在每个单元格中找到一个“程序”。然后可以连接这些单元格以显示“凭据”。

但是,我的选择是使用 Base 和 MySQL 等引擎。查询将使用GROUP_CONCAT()如下所述https://stackoverflow.com/a/194875/5100564。可以通过将选定的数据从 Calc 拖放到表格图标来将数据移动到 Base。

较新版本的 HSQL 还支持组连接。但是,LibreOffice 内置的旧版 HSQL 1.8 却没有。

相关内容