Как я могу использовать РЕГУЛЯРНОЕ сопоставление и разделение в фильтре в Google Таблицах?

#google-sheets #spreadsheet #array-formulas

Вопрос:

У меня есть два набора данных:

  • Набор данных 1-это данные нашего отдела продаж
  • Набор данных 2-это данные нашей финансовой команды

Общим элементом между этими двумя наборами является столбец идентификатора счета (столбец A в наборе данных 1 и столбец E в наборе данных 2). Однако в наборе данных 1 эти данные хранятся в виде массива, а в наборе данных 2 каждое значение массива отображается в отдельной строке.

цель

Я хотел бы иметь возможность обогатить набор данных 2 (cols F amp; G) данными из набора данных 1, однако у меня возникают проблемы с этой работой. Я пробовал использовать =FILTER(A3:A7, REGEXMATCH(TEXT(E3, "0"), TEXT(ARRAYFORMULA(SPLIT(A3:A7, ",")), "0"))) , но это дает мне следующую ошибку: «Диапазон ФИЛЬТРА должен быть одной строкой или одним столбцом». Я понимаю, что это происходит из-за SPLIT функции, но я не знаю, как еще это сделать.

Лист можно найти здесь.

Любая помощь очень ценится.

Ответ №1:

Я добавил новый лист («Справка Эрика») в вашу электронную таблицу с образцом. Следующая единственная формула даст все результаты для F3:G …

=ArrayFormula(IF(E3:E="",,VLOOKUP("*"amp;"%"amp;E3:Eamp;"%"amp;"*",{REGEXREPLACE("%"amp;A3:Aamp;"%","[,s]","%"),B3:C},{2,3},FALSE)))

% Символ просто используется для «заполнения» каждого элемента из Col A и Col E чем-то уникальным, чтобы отличить поисковый запрос 1 , скажем, 14 от (т. Е. VLOOKUP Будет выполняться поиск %1% вместо просто 1 , который не будет найден % и т. Д.). % Символ не имеет особого значения; это мог быть любой уникальный символ, который, как мы были уверены, обычно не появляется в Кол А или Кол Е.

REGEXREPLACE заменяет все запятые и пробелы этим специальным % символом в дополнение к переднему и заднему размещению. Таким образом, Col-список, подобный 1, 14 , будет рассматриваться листами в этот момент как %1%% .

Это * подстановочный символ, который добавляется спереди и сзади к поисковому запросу, что позволит найти его в элементах столбца A, содержащих списки.

Возвращаются результаты из второго и третьего столбцов (например, {2,3} ) виртуального массива.

Комментарии:

1. Просто идеально @Эрик Тайлер. Большое вам спасибо 🙌 🏻

Ответ №2:

Дайте примерить-

 =FILTER($B$3:$B$7,ArrayFormula(MMULT(--(SPLIT($A$3:$A$7,", ")=E3),SEQUENCE(Columns(ArrayFormula(SPLIT($A$3:$A$7,", ")))))))
 

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

Комментарии:

1. Большое вам спасибо за помощь @Harun24HR. Возможно, есть еще одна вещь, о которой я, вероятно, должен был упомянуть, а именно то, что, хотя на этом листе набор данных 1 ограничен только строками с 3 по 7, в моем реальном наборе данных 1 этот диапазон постоянно увеличивается. Я попытался переписать вашу формулу как =FILTER($B$3:$B,ArrayFormula(MMULT(--(SPLIT($A$3:$A,", ")=E3),SEQUENCE(Columns(ArrayFormula(SPLIT($A$3:$A,", "))))))) , но в итоге получил ошибку «ФИЛЬТР имеет несоответствующие размеры диапазона. Ожидаемое количество строк: 520, количество столбцов: 1. Фактическое количество строк: 1, количество столбцов: 1.». Вы знаете, почему?