Извлекать значения из диапазона с 2 столбцами, только если значение в столбце 1 содержит определенное слово в столбце 2 - PullRequest
1 голос
/ 04 октября 2019

Мне нужно извлечь каждого отдельного человека из списка, который не содержит определенной деятельности (Проект). Звучит просто, но я не могу до конца разобраться.

Пожалуйста, посмотрите пример здесь на Листе 2: https://docs.google.com/spreadsheets/d/1qjbjXFCYj1qXrVVGNnhOj11asxT_o1xHWXerRqAl1UQ/edit#gid=2105763617

enter image description here

Вот логика. Сначала я попытался выяснить, встречается ли этот человек только один раз, и если действие не является «Проектом»

=IF(A2<>"",IF(and(COUNTIF(A:A,A2)=1,B2<>"Project"),0,1),"")

Затем я просто извлекаю имя, удовлетворяющее этому критерию:

=query(ARRAYFORMULA(iF(I2:I=0,A2:A,"")), "where Col1 <>'' ")

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

Ответы [ 2 ]

2 голосов
/ 04 октября 2019
=UNIQUE(FILTER(A2:A, B2:B<>"Project"))

0


=UNIQUE(QUERY(A2:B, "select A where B <>'Project'", 0))

0


=UNIQUE(FILTER(A2:A, B2:B<>"Project", 
 NOT(REGEXMATCH(A2:A, "^"&TEXTJOIN("$|^", 1, FILTER(A:A, B:B="Project"))&"$"))))

0

0 голосов
/ 09 октября 2019

Несмотря на то, что ответ @ player0 решает этот вопрос, он сильно пострадал от производительности с> 1000 строк. Вместо этого я извлек все имена, которые содержали «Project», а затем все имена, которые не содержали «Project», а затем вычел все имена из первого массива, чтобы исключить имена, которые были в обоих.

=UNIQUE(FILTER(UNIQUE(FILTER(A2:A, B2:B<>"Project")), ISNA(MATCH(UNIQUE(FILTER(A2:A, B2:B<>"Project")), UNIQUE(FILTER(A2:A, B2:B="Project")),0))))
...