1

У меня есть большая электронная таблица с большим количеством таких значений, как телефон, почта, мобильный телефон и т. Д., Но приложение, в котором я получаю это, дает мне только одно из этих значений в строке. Например: если один контакт имеет три способа связи, он создает три строки. Посмотрите прикрепленные файлы.Линии слияния LibreOffice/Openoffice Calc

Результат должен объединить информацию в одну строку, также прилагается.

Thx для ваших идей!

before

after

ответ

2

Это хорошая задача для LibreOffice Base.

  1. Файл -> Новые -> База данных. Нажмите «Готово», чтобы использовать настройки по умолчанию, и выберите место для сохранения файла базы данных.
  2. В окне «Calc» щелкните вкладку «Sheet1» (или на любой вкладке) и перетащите в Tables в базовое окно. Установите флажок «Использовать первую строку как имена столбцов» и «Создать первичный ключ». Затем нажмите кнопку «Создать», чтобы создать таблицу 1.
  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» и «Copy». Вернитесь в Calc и вставьте результаты.
 
Name Lastname phone   mail    mobile 
John Doe  +49304856421 [email protected]  +491704 
Lisa Miller +1327464361785 [email protected] 
+0

Большое спасибо. Это работало очень хорошо. Теперь мне просто нужно адаптировать команду SQL к очень большой таблице и другим столбцам, и все будет хорошо. – mokkin

0

Предполагая, что данные изложены в пути, представленной в «до» изображение, которое вы можете использовать формулы для заполнения недостающей информации, а затем удалить дубликаты.

Сначала вставьте новый столбец "ID" в качестве столбца A, который имеет уникальный идентификатор, надеюсь, First/Last Name каскадного будет достаточно:

=CONCATENATE(A2,"|",B2) 

автозаполнение, что вниз для каждой строки.

Далее используйте формулу, чтобы заполнить недостающую информацию:

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

Эта формула проверяет, является ли первый символ слева в ячейке не совпадает ни с чем, в основном, что клетка является пустым, и если так делает ВПР в столбце «ID», находя первое совпадение «John | Doe», он возвращает номер телефона, иначе он просто оставляет значение там, которое в настоящее время имеет.

Если перетащить это через и изменить ВПР для других столбцов, например, электронная почта будет

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

затем удалить все дубликаты записей вам останутся с «после» изображения, которое вы хотите.

+0

Это не сработало для меня. 'VLOOKUP' занимает только первую строку, а телефон Лизы Миллер в этом примере находится не в первой строке (сначала идет ее первая почта). Таким образом, я закончил с пустой ячейкой.Также я был смущен тем, какие столбцы вставлять формулы. –

+0

Для меня тоже. Но спасибо за усилия. Ответ Джима К был прекрасен! – mokkin