首页 文章

LibreOffice / Openoffice Calc合并线

提问于
浏览
1

我有一个很大的电子表格,有很多 Value ,如电话,邮件,手机等等,但是我得到这个的应用程序每行只给出了其中一个值 . 例如:如果一个联系人有三种通信方式,则产生三条线路 . 请参阅附件 .

结果应该将信息合并到一行,也附加 .

谢谢您的想法!

before

after

2 回答

  • 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)
    

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

  • 2

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

    • 文件 - >新建 - >数据库 . 按"Finish"使用默认值,然后选择保存数据库文件的位置 .

    • 在Calc窗口中,单击"Sheet1"选项卡(或包含数据的任何选项卡)并在基本窗口中拖动到 Tables . 检查"Use first line as column names"和"Create primary key" . 然后按"Create"按钮创建Table1 .

    • 转到 Queries 并单击"Create Query in SQL view."粘贴以下内容:

    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)
    
    • 将查询保存为“Query1”并关闭查询 .

    • 右键单击"Query1"并复制 . 返回Calc并粘贴结果 .

    Name  Lastname  phone           mail             mobile
    John  Doe       +49304856421    john@doe.com     +491704
    Lisa  Miller    +1327464361785  mail@exmple.com
    

相关问题