Excel Объединить ячейки, если совпадают другие ячейки - PullRequest
1 голос
/ 24 января 2012

Объединить ячейки, если другая ячейка имеет две или более одинаковые величины: у моих данных две или более одинаковые записи, за исключением одной ячейки: пример A1 Имя = Джо, A2 = Джо, но B1 = Вторник, B2 = Среда.Мне нужно показать одну строку A1 = Джо и B1 = вторник, среда.Я могу создать еще одну строку, например, C1 = B1 и B2, но как сделать так, чтобы она проходила через A, и если есть совпадающая запись, объедините два значения из B. Я думаю, что это будет что-то вроде помещения в C1, C2, C3... = IF (A1 = A2 ..., B1 & B2, "") Но вместо A2 как он может пройти через все A, а затем объединить результаты B для сопоставления записей?

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Я нашел другое решение, которое не требует использования формул массива, и должно быть в состоянии пройти через все возможности. Опять же, это потребует, чтобы ваши необработанные данные были отсортированы по имени (чтобы все имена были сгруппированы вместе), а затем добавьте эту формулу в столбец сразу после ваших необработанных данных (я полагаю, C2)

=IF(A1<>A2,B2,C1&","&B2)

Это объединит все, что находится над ним, через запятую и сбрасывает объединение при каждом изменении имени. При этом поместье с теми данными, которые вы хотите, всегда будет против последнего экземпляра Имени. Мы можем найти последний экземпляр, используя результаты из шагов 2 и 3 в моем предыдущем ответе, а затем проиндексировать его в соответствии с результатами из приведенной выше формулы, поэтому ..

=INDEX(Sheet1!$C:$C,COUNTIF(Sheet1!$A:$A,$A2)+MATCH($A2,Sheet1!$A:$A,0) -1)

Выше я предполагаю, что имя, на которое вы хотите получить окончательный ответ, находится в ячейке A2

2 голосов
/ 24 января 2012

Вот возможное решение. (Надеюсь, я правильно понял ваши настройки)

Шаг 1) Разделите все ваши уникальные имена в столбце A на новый лист, снова в столбец A на новом листе - если вы используете Excel 2007 или более позднюю версию, вы можете просто скопировать весь столбец, а затем использовать инструмент удаления дубликатов

Шаг 2) На новом листе добавьте следующее в столбец B2. Это будет подсчитывать количество вхождений каждого имени. (Примечание: я предполагаю, что ваши необработанные данные находятся на листе 1, а новая копия обрабатывается на листе 2)

=COUNTIF(Sheet1!$A$1:$A$5,$A2)

Шаг 3) Добавить следующее в C3. Это найдет номер строки первого вхождения имени. (ВАЖНО: это означает, что для ваших необработанных данных должна быть применена сортировка, чтобы все имена отображались сгруппированными)

=MATCH($A2,Sheet1!$A$1:$A$5,0)

Шаг 4) В столбцах D - J вам необходимо добавить следующую формулу массива. Если вы раньше не работали с формулой массива: (i) выберите ячейки D2: J2 (ii) убедитесь, что D2 является активной ячейкой (iii) введите приведенную ниже формулу в строку формул (iv) нажмите ctrl + shift + enter

Это берет ваши данные в столбце B, смещает их по вхождению первой строки (Шаг 3), изменяет размер на количество имен (Шаг 2) и транспонирует (что переворачивает строки для столбцов)

=TRANSPOSE(OFFSET(Sheet1!$B$1:$B$5,C2-1,0,B2))

Это может удовлетворить ваши потребности как есть, но если вы настаиваете на запятой, разделяющей дни, то вы можете добавить это в K2 и просто скрыть столбцы B в J.

=IF(ISNA(D2),"",D2)&IF(ISNA(E2),"",","&E2)&IF(ISNA(F2),"",","&F2)&IF(ISNA(G2),"",","&G2)&IF(ISNA(H2),"",","&H2)&IF(ISNA(I2),"",","&I2)&IF(ISNA(J2),"",","&J2)

Я предположил, что вам никогда не понадобится объединять более 7 значений (например, 7 дней недели). Но если вы это сделаете, то вам придется расширить формулу Array на несколько столбцов. Если у вас нет установленного максимума, то, возможно, стоит изучить решение VBA.

...