В одном листе Excel у меня есть два разных набора данных по три столбца в каждом, которые представляют очень похожие данные.

Я хотел бы объединить это в один набор из трех столбцов.

Каждый набор данных имеет крайний левый столбец в качестве ключа, по которому я хотел бы сгруппировать данные.

Ключ появляется один раз или никогда в каждом наборе данных. Другие столбцы являются числовыми и могут быть пустыми (интерпретируются как ноль). Две серии могут быть разной длины.

Вот так:

[Name_A],[Score_A],[Value_A],[Name_B],[Score_B],[Value_B]
Adam,14,20,Johnny,8,
Johnny,11,,Bernice,5,5
,,,Adam,2,8

следует объединить в:

[Name],[Score],[Value]
Adam,16,28
Johnny,19,
Bernice,5,5

Порядок строк в конечном результате не важен.

2 ответа2

1

Разобрать ваши данные, используя текст в столбцы и запятую в качестве разделителя. Затем скомпилируйте список различных имен (это можно сделать с помощью удаления дубликатов на вкладке данных в Excel.) И используйте =sumif(Name_Column,Name1,Value1_Column) .

Это должно суммировать все по имени и стоимости.

пример

1

Ключом к объединению ваших наборов данных является извлечение списка уникальных имен. Это намного проще, если все имена находятся в одном столбце. Если вы хотите, чтобы ваши данные были расположены так, как вы показали, есть решение VBA, поэтому прокомментируйте ниже, если вам это нужно.

В первой таблице ниже я переместил ваши данные "B" в данные "A" и добавил еще несколько строк в каждом разделе.

Эта формула, заполненная из E2, перечисляет имена и удаляет дубликаты:

=IFERROR(INDEX((A$2:A$15),MATCH(0,COUNTIF($E$1:E1,A$2:A$15),0)),"")

Это формула массива, поэтому ее необходимо вводить с помощью клавиши CTRL Shift Enter.

Эти две формулы, заполненные из F2 и G2, складывают балл и значение для каждого имени в списке:

=IF(LEN(E2)<1,"",SUMIF(A$2:A$15,E2,B$2:B$15))

=IF(LEN(E2)<1,"",SUMIF(A$2:A$15,E2,C$2:C$15)) ______________________________________________________________________

Как это работает: Внутренний COUNTIF() создает массив количества раз, которое каждое из имен в столбце A появляется в растущем списке в столбце E. MATCH() находит позицию первого 0 (соответствует имени, которое еще не был указан) в этом массиве, и он используется как row_num в INDEX() , который выбирает имя из столбца A. Имена, которые уже были перечислены, больше не появляются.

IFERROR() вставляет пробелы для строк, которые будут иметь #NUM! ошибка, когда в формуле заканчиваются уникальные значения.

Две формулы SUMIF() просто складывают числа Score и Value для каждого имени. IF() вставляет пробел для строк, длина столбца E которых <1 (т. Е. Ячейка не имеет имени и выглядит пустой).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .