Я пытаюсь создать столбец, содержащий категорию, основанную на наборе категорий и строке match/regex из другого диапазона. Мой пример таков:

example

Я не могу найти здесь ответов на вопросы, которые объяснили бы мне, как это можно сделать, если это возможно. Поэтому я спрашиваю здесь, не может ли кто-нибудь помочь или указать мне на ответ, который я, возможно, пропустил!

Ни категории, ни диапазоны данных не будут иметь статического количества строк. Я хотел бы иметь формулу, которая просто выдает что-то вроде этого:

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

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

mrtimdog

Ответов: 1

Ответы (1)

попробуйте:

=ARRAYFORMULA(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, B2:B)&"]")))

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


обновление 1:

=INDEX(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, 
 REGEXREPLACE(C2:C, "[\.\*]", ))&"]")))

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

или:

=INDEX(IFNA(VLOOKUP(IFNA(REGEXEXTRACT(E2:E, "["&TEXTJOIN( , 1, 
 REGEXREPLACE(C2:C, "[\.\*]", ))&"]")), {
 REGEXREPLACE(C2:C, "[\.\*]", ), B2:B}, 2, 0)))

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



обновление 2

Во-первых, изучите свой regex: https://github.com/google/re2/wiki/Syntax

.

измените колонку C на:

.*(A).*
.*(B).*
.*(C).*

тогда используйте:

=ARRAYFORMULA(IFNA(VLOOKUP(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IFNA(REGEXEXTRACT(E3:E, TEXTJOIN("|", 1, C3:C)))),,9^9))), {
 IFNA(REGEXEXTRACT(C3:C, TEXTJOIN("|", 1, TRIM(FLATTEN(QUERY(TRANSPOSE(
 IFNA(REGEXEXTRACT(E3:E, TEXTJOIN("|", 1, C3:C)))),,9^9)))))), B3:B}, 2, 0)))

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

или короче:

=INDEX(IFNA(VLOOKUP(
 IFNA(REGEXEXTRACT(E3:E, "["&TEXTJOIN("|", 1, C3:C)&"]")), { 
 IFNA(REGEXEXTRACT(C3:C, TEXTJOIN("|", 1, 
 IFNA(REGEXEXTRACT(E3:E, "["&TEXTJOIN("|", 1, C3:C)&"]"))))), B3:B}, 2, 0)))

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

2022 WebDevInsider