1

我有一个很大的电子表格,其中包含很多值,例如“电话、邮件、手机等”,但我从中获取这些值的应用程序每行只给了我一个值。例如:如果一个联系人有三种沟通方式,则产生三行。请查看文件:

结果应该将信息合并到一行。

4

2 回答 2

2

这对 LibreOffice Base 来说是一项很好的任务。

  1. 文件 -> 新建 -> 数据库。按“完成”使用默认值,然后选择保存数据库文件的位置。
  2. 在 Calc 窗口中,单击“Sheet1”选项卡(或包含数据的任何选项卡)并拖动到TablesBase 窗口中。选中“使用第一行作为列名”和“创建主键”。然后按“创建”按钮创建 Table1。
  3. 转到Queries并单击“在 SQL 视图中创建查询”。粘贴以下内容:

    SELECT DISTINCT T1.Name, T1.Lastname, T2.phone, T3.mail, T4.mobile
    FROM Table1 T1
    LEFT JOIN (SELECT Name, Lastname, phone FROM Table1 WHERE phone IS NOT NULL) T2 ON (
        T2.Name = T1.Name AND T2.Lastname = T1.Lastname)
    LEFT JOIN (SELECT Name, Lastname, mail FROM Table1 WHERE mail IS NOT NULL) T3 ON (
        T3.Name = T1.Name AND T3.Lastname = T1.Lastname)
    LEFT JOIN (SELECT Name, Lastname, mobile FROM Table1 WHERE mobile IS NOT NULL) T4 ON (
        T4.Name = T1.Name AND T4.Lastname = T1.Lastname)
    
  4. 将查询另存为“Query1”并关闭查询。

  5. 右键单击“Query1”并复制。返回 Calc 并粘贴结果。
姓名 姓氏 电话 邮件 手机
约翰·多伊 +49304856421 john@doe.com +491704
丽莎·米勒 +1327464361785 mail@exmple.com
于 2015-12-31T02:07:07.497 回答
0

假设数据以“之前”图像中呈现的方式排列,您可以使用公式填写缺失的信息,然后删除重复项。

首先插入一个新列“ID”作为具有唯一标识符的列 A,希望连接的名字/姓氏就足够了:

=CONCATENATE(A2,"|",B2)

为每一行自动填充。

接下来使用公式填写缺失的信息:

=IF(LEFT(C2,1)="", VLOOKUP(A2, A:C, 3, FALSE),C2)

此公式检查单元格左侧的第一个字符是否不匹配,基本上单元格是空白的,如果是,则在“ID”列上进行 vlookup,找到“John|Doe”的第一个匹配项,它会返回电话数字,否则它只会留下它当前拥有的值。

如果您拖动它并修改其他列的 vlookup,例如电子邮件将是

=IF(LEFT(D2,1)="", VLOOKUP(A2, A:D, 4, FALSE),D2)

然后删除所有重复的记录,您将留下您想要的“之后”图像。

于 2015-12-30T15:55:10.510 回答