Разобрался:
Короткая версия:
=TEXTJOIN(", ",TRUE,ARRAYFORMULA(IFERROR(REGEXEXTRACT(SPLIT(D4," ",True),TEXTJOIN("|",TRUE,A2:A)),"")))
, так как функция regexextract
заканчивается после первого совпадения, нам нужно сделать следующее, чтобы он перебирает мою строку.
сначала мы используем split
и разбиваем каждый элемент в каждой ячейке по пробелам ' '
=split(A2, " ")
, что дает нам
![Split Array](https://i.stack.imgur.com/01HrX.png)
Обертываем это в ArrayFormula
, что в соответствии с вспомогательной функцией Google:
Включает отображение значений, возвращаемых из Формула массива в несколько строк и / или столбцов и использование не массивных функций с массивами
Следующим шагом является использование функции regextract
, с помощью ArrayFormula
позволяет нам соответствует каждому элементу, возвращенному из split
=ARRAYFORMULA(REGEXEXTRACT(SPLIT(B2, " "),TEXTJOIN("|", TRUE, A2:A)
textjoin
возвращает одну ячейку со значениями, разделенными выбранным разделителем |
в некоторых языках программирования |
является оператором OR что дает нам.
![enter image description here](https://i.stack.imgur.com/m7LWP.png)
, чтобы завершить его, мы используем IFERROR
s Приказ игнорировать #NAs
нас это не волнует. и еще TEXTJOIN
, чтобы привести все это в одну ячейку, разделенную запятой.
=TEXTJOIN(", ",TRUE,ARRAYFORMULA(IFERROR(REGEXEXTRACT(SPLIT(D2," ",True),TEXTJOIN("|",TRUE,A2:A)),"")))
![enter image description here](https://i.stack.imgur.com/uQEeZ.png)