Как найти / выделить повторяющиеся значения в нескольких столбцах в Excel - PullRequest
1 голос
/ 27 сентября 2019

Мне нужно найти / выделить дубликаты значений, которые встречаются в каждом из 8 столбцов моего листа (найден здесь) .Столбцы имеют значения от D0 до D8 и содержат ряды переменных.Я пробовал решения, предоставленные здесь .Я использовал следующие решения:

(1) = LOOKUP ("zzz", CHOOSE ({1,2}, "", INDEX (A $ 2: A $ 10, MATCH (0, COUNTIF (Е $ 1: Е1, А $ 2: $ 10) + ЕСЛИ (ЕСЛИ (СЧЕТЕСЛИ (B $ 2: B $ 8, А $ 2: $ 10)> 0,1,0) + ЕСЛИ (СЧЕТЕСЛИ (C $ 2: C $ 9, А $ 2: A $ 10)> 0,1,0) = 2,0,1), 0))))

и

(2) = INDEX ($A $ 2: $ A $ 10, MATCH (0, COUNTIF ($ E $ 1: E1, $ A $ 2: $ A $ 10) + IF (IF (COUNTIF ($ B $ 2: $ B $ 8, $ A $ 2: $ A $ 10))> 0, 1, 0) + IF (COUNTIF ($ C $ 2: $ C $ 9, $ A $ 2: $ A $ 10)> 0, 1, 0) = 2, 0, 1), 0))

Я заменил значения в соответствии с моим собственным рабочим листом, но каждый раз я просто получал «0» в качестве ответа, хотя это невозможно.Просто взглянув на первые 2 строки, можно легко определить, что есть значения, которые встречаются во всех 8 столбцах.

Я новичок в Excel и в настоящее время использую Microsoft Excel 2016 для Mac (версия 16.16.14).

1 Ответ

1 голос
/ 27 сентября 2019

РЕДАКТИРОВАТЬ # 2

Обнаружена ошибка во вложенных IF функциях из второй предоставленной вами формулы.

В пробной формулесделать IF(IF(A)+IF(B)=2,0,1), но, по моему мнению, правильный путь должен быть IF((IF(A)+IF(B))=2,0,1).

На основе предоставленного вами образца листа введите в ячейку следующую формулу J2:

=INDEX(A$2:A$861,MATCH(0,COUNTIF(J$1:J1,A$2:A$861)+IF((IF(COUNTIF(B$2:B$243,A$2:A$861)>0,1,0)+IF(COUNTIF(C$2:C$162,A$2:A$861)>0,1,0)+IF(COUNTIF(D$2:D$132,A$2:A$861)>0,1,0)+IF(COUNTIF(E$2:E$118,A$2:A$861)>0,1,0)+IF(COUNTIF(F$2:F$112,A$2:A$861)>0,1,0)+IF(COUNTIF(G$2:G$94,A$2:A$861)>0,1,0)+IF(COUNTIF(H$2:H$81,A$2:A$861)>0,1,0))=7,0,1),0))

Обратите внимание, что это формула массива , поэтому вам нужно сделать следующее после ввода вышеуказанной формулы:

Выберите диапазон , нажмите CONTROL + U , а затем нажмите COMMAND + RETURN

В случае, если вышеприведенное не работает для вас:

Выберите диапазон, нажмите CONTROL + U , а затем нажмите COMMAND + SHIFT + RETURN

Пожалуйста, прочитайте это, если вам все еще неясно: Как использовать формулу массива в Excel Mac (Кто бы знал, что использование формулы массива в Excel для Mac такая боль ...)

Перетаскивайте формулу вниз, пока список не возвращает #N/A ошибка, которая означает, что вы нашли все общие значения.

Предположим, у вас есть с именем этот список общих значений как Список , мой опыт работы с Excel 2016 для Windows заключается в том, что вы возвращаетесь к исходной таблице, выделяете всю таблицу, переходите к Условное форматирование в Home Tab, переходите к New Rule..., переходите кдо последней опции и введите следующую формулу в качестве правила форматирования:

=MATCH(A2,List,0)>0

Example

Учитывая, что Power Query не поддерживается в Excel 2011 and Excel 2016 for Mac, игнорируйте следующий подход, используя Power Query .Подход к силовому запросу FYI в этом случае намного быстрее, чем приведенный выше метод формул массива ...

Судя по вашему сообщению и приведенному вами примеру, я думаю, что вы хотите найти общие значения, представленные в all 8 Столбцы, что означает, что вы будете игнорировать значения, появившиеся в 7, 6, 5 или меньших столбцах.

Учитывая, что вы имеете дело с большим набором данных (860 x 8),Я предлагаю использовать Power Query для решения проблемы.Power Query - это встроенная функция в Excel 2010 Professional Plus и во всех более поздних версиях Excel.

Шаги:

  1. Использование Из таблицы функция под *Вкладка 1095 * для загрузки данных в Power Query Editor;
  2. Выделите все столбцы, затем используйте функцию Unpivot Columns на вкладке Transform, чтобы преобразовать таблицу в таблицу с 2 столбцами;
  3. Использование функции Группировка по в столбце Transform группа вкладок Value путем подсчета отдельных строк, как указано ниже;

Group By

Щелкните правой кнопкой мыши поле filer справа от заголовка столбца, чтобы заполнить список с помощью 8, который будет возвращать значения, появившиеся во всех 8 столбцах; Close& Загрузите столбец (который фактически является таблицей из одного столбца) в новый рабочий лист (по умолчанию).

Common Values

Вот запрос мощности M кодов за сценой только для справки.Все шаги используют встроенные функции редактора, что довольно просто.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"d0", Int64.Type}, {"d1", Int64.Type}, {"d2", Int64.Type}, {"d3", Int64.Type}, {"d4", Int64.Type}, {"d5", Int64.Type}, {"d6", Int64.Type}, {"d7", Int64.Type}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {}, "Attribute", "Value"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Value"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Count] = 8)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Count"})
in
    #"Removed Columns"
...