Excel - Как найти общие значения текста из нескольких (> 2) столбцов?

2

У меня есть 9 столбцов текстовых данных, и мне нужно знать общие термины, которые встречаются во всех девяти столбцах (или, возможно, различные комбинации столбцов). Я могу сделать 2 столбца, =IF(ISERROR(MATCH(A1,$C$1:$C$133,0)),"",A1)и я могу найти текстовые значения, которые являются дубликатами по всей электронной таблице, но не могу понять, как смотреть на общие текстовые значения в нескольких различных столбцах.

Есть ли способ изменить =IF(ISERROR(MATCH(A1,$C$1:$C$133,0)),"",A1)формулу, чтобы я мог сравнить 3, 4, ... 9 столбцов, а не только два? Я использую Microsoft 2013, если это поможет.

SoSOConfused
источник
ЗДРАВСТВУЙ. Не совсем понятно, что вам нужно. Вы хотите сказать, что хотите создать уникальный список из одной колонки из девяти колонок? Так что, например, и взять только 3 столбца, если у вас было: столбец A: «A»; «B», «B»: столбец B: «A»; «B», «C», «C»: столбец C: "A"; "C"; "D", вы хотите увидеть "A"; "B"; "C"; "D"?
XOR LX
Сожалею. Понял, что я неправильно понял ваш вопрос. Пытался удалить вышеупомянутое, но не смог. Я предполагаю, что вы действительно хотите вернуть список из одного столбца, содержащий только значения, которые присутствуют хотя бы один раз во всех девяти столбцах, правильно?
XOR LX
Спасибо за вопрос. У каждого столбца есть список; Я хочу найти общие значения в разных списках. Другими словами, какие значения являются общими для нескольких столбцов? В приведенном вами примере будет возвращено только «A», поскольку оно является единственным значением во всех 3 столбцах. Это проясняет?
SoSOConfused
По крайней мере, один раз ... присутствует в каждом столбце.
SoSOConfused
(1) Я тоже не уверен, что понимаю вопрос. Пожалуйста, опубликуйте (короткий, простой) пример того, что у вас есть и что вы хотите получить. (2) Это то, что вам нужно делать один раз (или, может быть, даже раз в год), так что все в порядке, если это немного ручное / процедурное и занимает много времени, или это то, что вы хотите делать часто, или это это то, что вы хотите, чтобы происходило непрерывно, автоматически (например, что-то изменить в одном из столбцов и результат обновляется немедленно)? (3) приемлемо ли решение VBA?
G-Man

Ответы:

1

У меня есть решение, которое будет работать, но оно уродливо. Я собираюсь предположить, что вы смотрите на ячейку A1 и видите, отображается ли она во всех 3 столбцах (D, E, F).

=MIN(MAX(($D$1:$D$3=$A1)*1),MAX(($E$1:$E$3=$A1)*1),MAX(($F$1:$F$3=$A1)*1))

Это формула массива, поэтому ее нужно вводить с помощью Ctrl + Shift + Enter

Теперь, как это работает, начиная с наизнанку

($ D $ 1: $ D $ 3 = $ A1) * 1 Сравните значения от D1 до D3 с A1, которые возвращают значение true или false, * 1 преобразует это значение в 1 и 0.

Max Если первая формула находит совпадение в столбце D, она возвращает 1, которое вернет Max. Если совпадений не найдено, максимальное (только) значение равно нулю.

Мин. Если все столбцы содержат совпадение, все формулы максимума будут содержать 1, поэтому минимум будет равен 1. Если совпадения не во всех столбцах, минимальное значение будет равно нулю.

Если вы хотите посчитать количество соответствующих столбцов, используйте сумму вместо min и запоминайте ctrl + shift + enter .

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

введите описание изображения здесь

gtwebb
источник
0

Эта настройка будет работать для любого количества столбцов.

Сначала перейдите в «Диспетчер имен» ( вкладка « Формулы ») и определите следующее:

Name: Range1
Refers to: =$A$1:$I$8

(Или что бы ни случилось, это рассматриваемый диапазон.)

Name: Arry1
Refers to: =COLUMN(Range1)-MIN(COLUMN(Range1))

Name: Arry2
Refers to: =ROW(INDEX(Range1,,1))-MIN(ROW(INDEX(Range1,,1)))+1

Name: Arry3
Refers to: =MMULT(0+(COUNTIF(OFFSET(INDEX(Range1,,1),,Arry1,,),INDEX(Range1,,1))>0),ROW(INDIRECT("1:"&COLUMNS(Range1)))^0)

Выход из диспетчера имен.

Тогда требуемая формула массива :

=IFERROR(INDEX(INDEX(Range1,,1),SMALL(IF(FREQUENCY(IF(INDEX(Range1,,1)<>"",IF(Arry3=COLUMNS(Range1),MATCH(INDEX(Range1,,1),INDEX(Range1,,1),0))),Arry2),Arry2),ROWS($1:1))),"")

Скопируйте вниз, пока не начнете получать бланки для результатов.

С уважением

Формулы массивов вводятся не так, как «стандартные» формулы. Вместо того, чтобы просто нажать Enter, сначала вы удерживаете Ctrlи Shift, и только потом нажимаете Enter. Если вы сделали это правильно, вы заметите, что Excel заключает фигурные скобки {}вокруг формулы (хотя не пытайтесь вставить их вручную).

XOR LX
источник
-1

Я думаю, что вы могли бы получить довольно далеко с контрагентом:

введите описание изображения здесь

kztd
источник